Edavro
Next.js educational platform — code-verified technical documentation
1. Introduction
Edavro is a mobile-first educational web app built with Next.js 16 App Router, TypeScript, Tailwind CSS 4, and React 19.2.
This documentation is generated from real source inspection: routes, stack versions, storage keys, and PWA behavior are aligned with actual code.
48
Pages
7
Layouts
6
Shared Components
100%
TypeScript
2. Key Features
App Router Architecture
Organized route groups: (root), (auth), (secure-paiges), and (public-paiges).
Authentication Journey
Signup, OTP verify, reset-password, create-new-password, and profile completion flows.
Course Lifecycle
Course discovery, details, enrollment, learning progress, and certification screens.
Payment Workflow
Card management, secure-payment selection, and passcode confirmation routes.
PWA Runtime
Custom service worker caching, install banner logic, and offline fallback route.
Dark Themed UI
Tokenized color system in globals.css with Tailwind v4 @theme variables.
Frontend-Only Data Layer
No centralized API client is committed yet; state is currently handled with localStorage, sessionStorage, and page-level logic.
Install Experience
Cross-platform install handling for Android/Desktop and manual iOS instructions.
3. Quick Start
Requirements
- Node.js 18.17+
- npm 9+ or pnpm 8+
- Git
Installation
# 1. Install dependencies
npm install
# 2. Start development server
npm run dev
# 3. Open in browser
http://localhost:3000
Available Scripts
| Script | Description |
|---|---|
npm run dev | Start the Next.js dev server |
npm run build | Create the production build |
npm run start | Serve the production build |
npm run lint | Run ESLint checks across the project |
4. Folder Structure
5. All Pages (49)
Core
| Route | Description |
|---|---|
/ | App entry route |
/home | Learner home dashboard |
/courses | Course browsing page |
/search-bar | Search and filtering |
/wishlist | Wishlist management |
/reviews | Reviews and ratings |
/pwa | PWA showcase page |
/splash | Public splash demo |
Onboarding
| Route | Description |
|---|---|
/onboarding | Onboarding flow |
Authentication
| Route | Description |
|---|---|
/auth/signin | Email and password login form |
/auth/signup | Registration form for new learners |
/auth/reset-password | Reset password request page |
/auth/create-new-password | Set a new password after verification |
/auth/otp-code-verify | OTP code verification screen |
/auth/current-experience-level | Select current learning experience |
/auth/interests | Choose learning interests and topics |
/auth/purpose | Learning goal and purpose selection |
My Courses
| Route | Description |
|---|---|
/my-courses | Enrolled course dashboard |
/my-courses/free-courses | Browse free courses available now |
/my-courses/recommended | Recommended courses based on interests |
/my-courses/upcoming-sessions | Live session schedule and reminders |
/my-courses/course-details/[id] | Course details and curriculum overview |
/my-courses/learning-progress/[id] | Track course progress and completion |
/my-courses/milestone | Milestones achieved after start courses |
/my-courses/completed-courses | Courses completed and certificates earned |
/my-courses/certification | Certificates earned after finishing courses |
Payment
| Route | Description |
|---|---|
/payment/add-new-card | Add new payment card with validation |
/payment/card/[id] | Manage saved payment cards |
/payment/passcode | Secure passcode input for payments |
/payment/secure-payment/[id] | Checkout experience for course purchases |
Profile
| Route | Description |
|---|---|
/profile | User profile overview and settings |
/profile/complete-profile | Complete profile details for learners |
/profile/personal-info | Edit personal information and preferences |
/profile/notification | Notification settings and alerts |
/profile/notifications | Notification history and messages |
/profile/reminder | Learning reminder and scheduling settings |
/profile/subscription | Subscription plan and billing overview |
/profile/privacy-policy | Privacy policy |
/profile/terms-and-conditions | Terms and conditions |
Support
| Route | Description |
|---|---|
/support/support | Submit support requests and messages |
/support/faq | Frequently asked questions and troubleshooting |
/support/help-center | Detailed help and documentation articles |
/support/message | Contact support message page |
/support/not-yet | Feature-unavailable fallback with support actions |
/support/language | Language selection and localization |
/support/security | Security and privacy settings |
Utility
| Route | Description |
|---|---|
/documentation | Developer documentation page |
/offline | Offline fallback page for PWA |
/not-found | 404 page for missing routes |
6. Project Analysis
Routing
The app has 48 page routes, grouped by feature domains and visibility scopes using App Router route groups.
Layouts
There are 7 layout files providing shared wrappers for root, auth, onboarding, and secure sub-sections.
State Persistence
Persistent state is primarily handled with localStorage and limited sessionStorage usage, not centralized context providers.
PWA Strategy
Custom public/sw.js is registered from src/components/pwa/ServiceWorkerRegister.tsx and pairs with /offline for fallback navigation.
7. User Flows
New User Onboarding
- /onboarding
- /auth/signup
- /auth/otp-code-verify
- /auth/current-experience-level
- /auth/interests
- /auth/purpose
- /home
Password Recovery
- /auth/signin
- /auth/reset-password
- /auth/otp-code-verify
- /auth/create-new-password
- /auth/signin
Course Purchase
- /courses
- /my-courses/course-details/[id]
- /payment/secure-payment/[id]
- /payment/passcode
- /my-courses/learning-progress/[id]
PWA Install
- /pwa
- beforeinstallprompt
- Install banner confirm
- Standalone launch
8. Fonts & Typography
Primary
Roboto
Used for body text, headings, and utility classes throughout the app.
var(--font-sans)Source
Local Font Files
Loaded via src/app/fonts.css using @font-face declarations.
public/assets/fonts/*.woff2src/app/globals.css under @theme, and the Roboto faces are declared in src/app/fonts.css.Font Sizes
| Use | Size |
|---|---|
| Page title | text-5xl / 48px |
| Section header | text-3xl / 32px |
| Body | text-sm / 14px |
| Caption | text-xs / 12px |
9. Customisation
Brand Colour
Change the primary brand colour in src/app/globals.css:
@theme {
--color-primary: #7B48FF; /* purple theme */
}
Adding a New Page
- Create
src/app/your-page/page.tsx. - Wrap content in a page-level container and style as needed.
- Add route-level handling in layout and navigation if required.
- If API data is required, add a new client in
src/api/first, because the folder is currently empty.
10. Data & State
localStorage
| Key | Type | Purpose |
|---|---|---|
user | JSON string | Basic logged-in user object |
token | string | Auth token used for sign-in state |
userEmail | string | Signup email used for OTP verification |
resetEmail | string | Email for reset-password flow |
user_level | string | Selected experience level |
user_interests | JSON[] | Selected learning interests |
userData | JSON | Complete profile form data |
user_reminder | JSON | Reminder settings for study notifications |
edavro-pwa-dismissed | "1" | Install banner dismissal state |
edavro-pwa-installed | "1" | Install completion state |
sessionStorage
| Key | Type | Purpose |
|---|---|---|
signupActiveLegal | string | Tracks active legal modal tab in signup page |
Cookies / Server Session
11. PWA Configuration
public/manifest.json
App metadata, icons, theme color, and shortcuts.
public/sw.js
Service worker cache rules for offline support.
src/app/offline/page.tsx
Offline fallback page when network is unavailable.
src/components/pwa/ServiceWorkerRegister.tsx in src/app/layout.tsx, and install UX is handled by PwaBanner.tsx with localStorage keys edavro-pwa-dismissed and edavro-pwa-installed.12. Credits & Libraries
| Library / Resource | Version | Used For |
|---|---|---|
| Next.js | 15.x/16 | App Router architecture |
| React | 19.x | Component rendering with use client |
| Tailwind CSS | v4.0 | CSS-first configuration via @theme |
| @tailwindcss/postcss | ^4 | Tailwind v4 PostCSS integration |
| @tailwindcss/postcss | ^4 | Tailwind v4 PostCSS integration |
| Lucide React | ^1.7.0 | Additional icon set |
| SweetAlert2 | ^11.26.24 | Modal alerts and confirmation flows |
| PropTypes | ^15.8.1 | Runtime prop validation in select components |
| ESLint | ^9 | Code quality checks with Next.js presets |
| eslint-config-next | 16.2.2 | Next.js linting rules |
13. Support
If you have questions beyond this documentation, use the in-app support section.
Before reaching out, please:
- Read this documentation thoroughly.
- Check the browser console for errors.
- Confirm you are running
npm run dev, not opening files directly. - Ensure
npm installcompleted without errors.