Canadian permanent residency pathway tracker and planning tool.
Navly helps users understand possible Canadian PR pathways, estimate CRS scores, track physical presence in Canada, and identify missing requirements — without providing legal advice.
- Onboarding flow — dynamic question set based on immigration status (outside Canada, temporary resident, permanent resident)
- CRS estimator — calculates Express Entry Comprehensive Ranking System score from profile data
- Canada days tracker — daily check-in system to track physical presence for CEC, PR residency obligation, and citizenship eligibility
- Pathway matcher — scores and ranks eligible PR streams (CEC, FSW, PNP, etc.) based on user profile
- Missing requirements engine — identifies gaps and suggests next actions
- AI chat assistant — answers general immigration questions using profile context (powered by Claude / Groq)
- Express Entry draws feed — synced from IRCC data
- Partner listings — verified immigration consultants with booking links
- Stripe billing — subscription plans for advanced tracking features
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS v4, shadcn/ui |
| Auth + DB | Supabase (Postgres + Row Level Security) |
| AI | Anthropic Claude API + Groq SDK |
| Payments | Stripe |
| Brevo (transactional) | |
| Analytics | PostHog |
| Deployment | Vercel / Netlify |
- Node.js 20+
- A Supabase project
- A Stripe account (for billing features)
- A Groq or Anthropic API key (for AI chat)
git clone https://github.com/your-org/navly.git
cd navly
npm installcp .env.example .env.localFill in .env.local:
# Supabase
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
# Stripe
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=
STRIPE_PRICE_TRACKER=
STRIPE_PRICE_TRACKER_ANNUAL=
# AI
GROQ_API_KEY=
# Email (Brevo)
BREVO_API_KEY=
BREVO_FROM_EMAIL=
# App
NEXT_PUBLIC_APP_URL=http://localhost:3000
ADMIN_EMAIL=
CRON_SECRET=
# Analytics
NEXT_PUBLIC_POSTHOG_KEY=
NEXT_PUBLIC_POSTHOG_HOST=# Apply migrations in order via Supabase CLI or the SQL editor
supabase db pushMigrations are in supabase/migrations/.
npm run devOpen http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.