Skip to content

Pages Overview

The IndieStack app is organized into 6 route groups with 30+ pages and 5 API routes.

Route Group Architecture

src/app/
├── (marketing)/     # Marketing - 11 pages - Public
├── auth/            # Auth - 5 pages - Public (redirects if logged in)
├── dashboard/       # Dashboard - 14 pages - Authenticated only
├── dashboard/admin/ # Admin - 3 pages - admin/super_admin only
└── api/             # API routes - 5 routes

Marketing Pages (Public - 11 pages)

PagePathDescription
Home/Hero, stats, features, tech stack, CTA
Features/featuresCore features, tech highlights, platform advantages
Pricing/pricingFree/Pro/Enterprise tier comparison
Blog/blogBlog article list
Blog Detail/blog/[slug]Blog article detail
Changelog/changelogVersion release timeline
FAQ/faqAccordion FAQ list
About/aboutTeam introduction and project vision
Contact/contactContact form (server-validated)
Privacy/privacyLegal document
Terms/termsLegal document

All marketing pages use Server Components with getTranslations for i18n.

Auth Pages (Public - 5 pages)

PagePathComponent
Login/auth/loginLoginForm (email/password + GitHub + Google OAuth)
Register/auth/registerRegisterForm (email + OAuth)
Forgot Password/auth/forgot-passwordForgotPasswordForm
Reset Password/auth/reset-passwordResetPasswordForm
OAuth Callback/auth/callbackCallback handler (completes OAuth flow)

Auth pages use Card layout centered on screen. Authenticated users are redirected to dashboard.

Dashboard (Protected - 14 pages)

PagePathContent
Overview/dashboardWelcome, 4 stat cards, plan info, recent activity
Analytics/dashboard/analyticsRevenue chart, user growth, API calls, response time
Profile/dashboard/profileProfile display + edit form, password change
Settings/dashboard/settingsNotification preferences (email, push, marketing)
Team/dashboard/teamTeam member list, role badges, remove member
Invite Member/dashboard/team/inviteInvite form (email + role selection)
Create Team/dashboard/team/createCreate new team form
Projects/dashboard/projectsProject card grid (name, status, domain, branch)
Project Detail/dashboard/projects/[id]Single project detail
Notifications/dashboard/notificationsNotification list (type badge, read/unread)
Integrations/dashboard/integrationsThird-party integrations (GitHub, Slack, Vercel, Stripe)
Billing/dashboard/billingCurrent plan, usage stats, upgrade button
API Keys/dashboard/api-keysKey list (name/key/created/last used), create/delete/copy
Edit Profile/dashboard/profile/editProfile edit form

All dashboard pages use export const dynamic = "force-dynamic" for real-time data.

Admin Panel (Protected - super_admin / admin only - 3 pages)

PagePathContent
Admin Console/dashboard/adminStats cards, role distribution chart, system status
User Management/dashboard/admin/usersUser list search, role switching
Audit Logs/dashboard/admin/audit-logsOperation history, filter by action/user/time

Admin panel is hidden from regular users. Only super_admin and admin roles can access it via sidebar.

API Routes (Public/Protected - 5 routes)

RouteMethodDescriptionAuth
/api/healthGETHealth check (DB, Supabase, memory)Public
/api/auth/callbackGETAuth callbackPublic
/api/userGET/PUTGet/update user infoRequired
/api/teamsPOST/GETCreate/get teamsRequired
/api/invitationsPOSTSend invitation emailAdmin

Documentation Site (Public - 13 pages)

Independent VitePress project (docs-site/), deployable separately to Vercel or Docker:

Quick Start, Architecture, Mock Mode, Auth Flow, Project Structure, Tech Stack, Supabase, Components, Configuration, Scripts, Deployment, Pages Overview + Home

The docs site supports Chinese/English bilingual, dark/light theme switching, and local search.

基于 MIT 协议开源