Complete Platform Guide

Sunkar Sikho
Admin & User Guide

Everything you need to manage the platform โ€” from adding audio lessons to tracking student progress. This guide covers every module, step by step.

Version: 1.0 Platform: Admin Panel + Student/Parent UI Language: English
๐Ÿ 

Platform Overview

What is Sunkar Sikho and how does it work

โ„น๏ธ
What is Sunkar Sikho? Sunkar Sikho is a kids' learning platform offering audio lessons, printable workbooks, and quizzes for students in Classes 1โ€“5. Parents subscribe to a plan, students get access to content, and admins manage everything from the Admin Panel.

๐ŸŽง Audio Lessons

Chapter-wise audio lessons organized by class and category. Students can listen, pause, and replay. Content is managed by admin.

๐Ÿ“š Workbooks

Printable PDF workbooks for each class and subject. Students can view and download them from their dashboard.

๐Ÿง  Quizzes

Multiple-choice quizzes per chapter. Students take quizzes, get instant scores, and parents can track performance.

๐Ÿ’ณ Subscriptions

Parents choose a plan (free or paid), pay via Razorpay, and their child gets access. Admin can manage all subscriptions.

๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ Parent Dashboard

Parents log in to see their child's quiz attempts, scores, and overall progress across all subjects.

โš™๏ธ Admin Panel

Full control over content, users, plans, subscriptions, notifications, invoices, and site settings.

๐Ÿ—๏ธ

System Architecture

Three separate projects working together

๐Ÿ–ฅ๏ธ UI (Student/Parent Frontend)

Angular app. Runs on port 4200 (dev). This is what students and parents see โ€” home, login, audio lessons, quizzes, dashboard, pricing.


http://localhost:4200

๐Ÿ› ๏ธ ADMIN (Admin Panel)

Separate Angular app. Runs on port 4201 (dev). Only for admins โ€” manage all content, users, plans, subscriptions.


http://localhost:4201

โšก API (Backend)

Node.js + Express + MySQL. Runs on port 5646. All data flows through this. Auto-creates and migrates database tables on startup.


http://localhost:5646/api
โš ๏ธ
Startup Order Always start the API first, then the UI and ADMIN. The API auto-creates all database tables on first run โ€” no manual SQL needed.
๐Ÿ”„

User Journey Flow

How a new student gets onboarded end-to-end

Parent visits
Pricing page
โ†’
Selects a Plan
(Free or Paid)
โ†’
Fills Signup
3-step wizard
โ†’
Razorpay
Payment (if paid)
โ†’
Auto Login
as Student
โ†’
Access Audio,
Workbooks, Quizzes
1

Parent browses Pricing

Goes to /pricing โ€” sees all available plans with features and prices. Clicks "Subscribe" on a plan.

2

Signup Wizard โ€” Step 1: Student Info

Enters child's name, email, password, class, and age. This creates the student account.

3

Signup Wizard โ€” Step 2: Parent Info

Enters parent's name, email, mobile, and password. Parent account is linked to the student.

4

Signup Wizard โ€” Step 3: Review & Pay

For paid plans โ€” Razorpay payment popup opens. For free plans โ€” directly registers. On success, auto-login happens.

5

Student Dashboard

Student is logged in and can access all content based on their subscription plan.

๐Ÿ”

Admin Login

Accessing the Admin Panel

1

Open Admin Panel

Go to http://localhost:4201 in your browser. You will see the Admin Login page.

2

Enter Credentials

Enter your admin email and password. These are the credentials stored in the users table in the database.

3

Access Dashboard

On successful login, you are redirected to the Admin Dashboard. A JWT token is stored in localStorage to keep you logged in.

โš ๏ธ
Session Expiry If you see "Unauthorized" errors, your session has expired. Simply log out and log back in.
๐Ÿ“Š

Dashboard

Overview of platform stats at a glance

๐Ÿ“ฆ Total Students

Count of all registered students on the platform.

๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ Total Parents

Count of all parent accounts linked to students.

๐ŸŽง Audio Lessons

Total number of audio lessons published.

๐Ÿ“š Workbooks

Total workbooks available for students.

๐Ÿง  Quizzes

Total quizzes created across all classes.

๐Ÿ’ณ Active Subscriptions

Number of currently active student subscriptions.

๐Ÿ‘ฆ

Students

Manage all student accounts and view their activity

โ„น๏ธ
Where to find it: Admin Panel โ†’ Left sidebar โ†’ Students
1

View All Students

The Students page shows a table with all registered students โ€” name, email, class, age, and active status.

2

Add a Student Manually

Click the "Add Student" button. Fill in name, email, password, class level, and age. Click Save.

3

Edit a Student

Click the Edit (pencil) icon on any student row. Update the details and save.

4

View Student Overview

Click the "Overview" blue button on any student row. This opens a detailed page showing: total quiz attempts, completed quizzes, average score, best score, total time spent, and full quiz history table.

5

Delete a Student

Click the Delete (trash) icon. Confirm the deletion. This permanently removes the student record.

๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ

Parents

Manage parent accounts linked to students

โ„น๏ธ
Where to find it: Admin Panel โ†’ Left sidebar โ†’ Parents

๐Ÿ‘๏ธ View Parents

See all parent accounts with their linked student name, email, and mobile number.

โž• Add Parent

Click "Add Parent". Select the linked student from the dropdown. Fill in name, email, mobile, and password.

โœ๏ธ Edit Parent

Update parent details. Note: password field is optional on edit โ€” leave blank to keep existing password.

๐Ÿ—‘๏ธ Delete Parent

Removes the parent account. The linked student account is NOT deleted.

โš ๏ธ
One Parent per Student Each student can have one parent account linked via the student_id field. If a parent is added via the signup flow, they are automatically linked.
๐Ÿซ

Classes

Define class levels used across the platform

โ„น๏ธ
Where to find it: Admin Panel โ†’ Left sidebar โ†’ Classes

Classes define the grade levels (e.g., Class 1, Class 2, Class 3, Class 4, Class 5). These are used when adding audio lessons, workbooks, and quizzes to organize content by grade. Add a class by clicking "Add Class", entering the class name, and saving. Audio lessons and workbooks are then filtered by these class values.

๐Ÿ—‚๏ธ

Audio Categories

Organize audio lessons into subject/topic groups

โ„น๏ธ
Where to find it: Admin Panel โ†’ Left sidebar โ†’ Audio Categories
1

What are Audio Categories?

Categories group audio lessons by subject or topic โ€” e.g., "Mathematics", "Hindi Stories", "Science". Each audio lesson belongs to one category.

2

Add a Category

Click "Add Category". Enter the category name and optionally an icon or description. Save.

3

Edit / Delete

Use the Edit or Delete buttons on each row. Deleting a category does NOT delete its audio lessons โ€” they become uncategorized.

๐ŸŽง

Audio Lessons

Upload and manage all audio content for students

โ„น๏ธ
Where to find it: Admin Panel โ†’ Left sidebar โ†’ Audio Lessons
1

Add an Audio Lesson

Click "Add Audio Lesson". Fill in: Title, Class Level, Category, Chapter, Description, and the Audio File URL. Save.

2

Required Fields

Title โ€” name of the lesson. Class Level โ€” which class it belongs to (e.g., Class 1). Category โ€” subject group. Audio URL โ€” direct link to the MP3/audio file.

3

How it appears on UI

Students see audio lessons on the /audio-lessons page. They are organized by Class tabs first, then Category tabs. Clicking a lesson opens the Audio Player page.

4

Edit / Delete

Use the Edit (pencil) or Delete (trash) buttons on each row in the audio lessons table.

โœ…
Tip: Upload audio files to a cloud storage (like AWS S3 or Google Drive public link) and paste the direct URL. The player supports MP3, WAV, and OGG formats.
๐Ÿ“š

Workbooks

Manage printable PDF workbooks for students

โ„น๏ธ
Where to find it: Admin Panel โ†’ Left sidebar โ†’ Workbooks
1

Add a Workbook

Click "Add Workbook". Fill in: Title, Class Level, Subject, Chapter, Description, Thumbnail Image URL, and PDF File URL.

2

How it appears on UI

Students see workbooks on the /workbooks page. Clicking a workbook opens the PDF viewer at /workbook-details/:id.

3

Edit / Delete

Use the Edit or Delete buttons on each row. Deleting a workbook removes it from the student view immediately.

๐Ÿง 

Quizzes

Create quizzes with multiple-choice questions

โ„น๏ธ
Where to find it: Admin Panel โ†’ Left sidebar โ†’ Quizzes
1

Create a Quiz

Click "Add Quiz". Enter: Title, Class Level, Subject, Chapter, Time Limit (minutes), and Description. Save the quiz first.

2

Add Questions

After creating the quiz, click "Manage Questions" on the quiz row. Click "Add Question". Enter the question text, 4 options (A, B, C, D), and select the correct answer. Save.

3

How it appears on UI

Students see quizzes on the /quiz-center page. Clicking a quiz opens /quiz-details/:id with quiz info. Clicking "Start Quiz" opens the interactive quiz at /take-quiz.

4

Quiz Results

After completing a quiz, students see their score, percentage, and correct/wrong answers on the /quiz-results page. Results are saved and visible in the Student Overview in Admin.

๐Ÿ’ณ

Plans

Define subscription plans available to students

โ„น๏ธ
Where to find it: Admin Panel โ†’ Left sidebar โ†’ Plans
1

Add a Plan

Click "Add Plan". Fill in: Name, Code (short identifier), Price, Duration (days), Max Kids, Description, and whether it's a Free plan.

2

Free Plan

Toggle "Is Free" to ON for a free plan. Free plans skip the Razorpay payment step during signup โ€” students are registered directly.

3

How Plans appear on UI

Plans are shown on the /pricing page. Students/parents select a plan and proceed to signup. The selected plan is carried through the entire onboarding flow.

Field Description Example
NameDisplay name of the planBasic Plan
CodeShort identifierBASIC
PriceAmount in INR999
Is FreeToggle for free plansYes / No
Duration DaysHow many days access lasts365
Max KidsMax students per subscription1
TypePlan categorystandard / premium
FeaturesList of features (JSON)["Audio Lessons", "Workbooks"]
โญ

Subscription Plans

Detailed plans with duration tiers and pricing (shown on Pricing page)

โ„น๏ธ
Where to find it: Admin Panel โ†’ Left sidebar โ†’ Subscription Plans

๐Ÿ“ฆ Plan Types

Three types: combo (Audio + Workbooks), audio-only, workbook-only. Each type has its own pricing page on the UI.

โฑ๏ธ Duration Tiers

Each plan can have multiple durations โ€” e.g., 6 months, 12 months, 24 months โ€” each with its own price and discount percentage.

๐Ÿ†“ Free Plans

Toggle "Is Free" to create a free plan. Free plans show a "Get Started Free" button instead of a price on the pricing page.

โœจ Features List

Add bullet-point features that appear on the pricing card โ€” e.g., "1000+ Audio Lessons", "Offline Download", "Parent Dashboard".

1

Add a Subscription Plan

Click "Add Plan". Select type (combo/audio-only/workbook-only). Fill in name, title, subtitle, base price, and features. Add duration tiers with prices.

2

Edit Duration Pricing

In the edit modal, scroll to the Durations section. Add/remove duration rows. Each row has: months, price, and discount %.

๐Ÿ“‹

Subscriptions

View and manage all student subscriptions

โ„น๏ธ
Where to find it: Admin Panel โ†’ Left sidebar โ†’ Subscriptions
ColumnMeaning
Student NameWhich student this subscription belongs to
Plan NameWhich plan they subscribed to
Start DateWhen the subscription started
End DateWhen the subscription expires
Statusactive / expired / cancelled
Payment IDRazorpay payment ID (for paid plans)
Is ActiveWhether the subscription is currently active
โš ๏ธ
Manual Subscription You can manually add a subscription for a student by clicking "Add Subscription". Select the student, plan, start/end dates, and status.
๐Ÿ””

Notifications

Send announcements and alerts to students/parents

โ„น๏ธ
Where to find it: Admin Panel โ†’ Left sidebar โ†’ Notifications

Create notifications with a title, message, and target audience. These appear as alerts or banners on the student/parent UI. Use this for announcements like new content, maintenance windows, or special offers.

๐Ÿงพ

Invoices

Track payment invoices for subscriptions

โ„น๏ธ
Where to find it: Admin Panel โ†’ Left sidebar โ†’ Invoices

Invoices are auto-generated when a student subscribes to a paid plan. Each invoice shows the student name, plan, amount, payment ID, and date. You can view, filter, and export invoice records from this section.

๐Ÿ“ˆ

Reports

Analytics and performance reports

โ„น๏ธ
Where to find it: Admin Panel โ†’ Left sidebar โ†’ Reports

The Reports section provides an overview of platform activity โ€” new registrations over time, quiz completion rates, subscription revenue, and content engagement. Use this to understand how students are using the platform.

๐Ÿ’ฐ

Payment Settings

Configure Razorpay keys for online payments

โ„น๏ธ
Where to find it: Admin Panel โ†’ Left sidebar โ†’ Payment Settings
1

Enter Razorpay Keys

Go to Payment Settings. Enter your Razorpay Key ID and Key Secret. These are available from your Razorpay Dashboard under Settings โ†’ API Keys.

2

Test vs Live Mode

Use test keys (starting with rzp_test_) during development. Switch to live keys (starting with rzp_live_) when going live.

3

How it works

When a student subscribes to a paid plan, the UI fetches the Razorpay Key ID from the API and opens the Razorpay payment popup. Payment is processed entirely on the frontend โ€” no server-side webhook needed.

โš ๏ธ
Important: Never share your Razorpay Key Secret publicly. The Key ID is safe to use on the frontend. The Key Secret should only be stored in the API's .env file.
โš™๏ธ

Site Configuration

Control all website-wide settings from one place

โ„น๏ธ
Where to find it: Admin Panel โ†’ Left sidebar โ†’ Site Configuration
SettingWhat it controls
Site NamePlatform name shown in header and browser tab
Logo URLLogo image shown in the header
Mobile / WhatsAppPhone number for the WhatsApp sticky button on the UI
EmailContact email shown in footer
AddressPhysical address shown in footer
Facebook URLFacebook page link in header/footer social icons
Instagram URLInstagram profile link
YouTube URLYouTube channel link
Twitter URLTwitter/X profile link
About TextShort description shown on About page and footer
Hero TitleMain heading on the Home page hero section
Hero SubtitleSubheading on the Home page hero section
โœ…
Live Updates: All changes in Site Configuration are reflected on the UI immediately after saving. No restart needed โ€” the UI fetches config on every page load.
๐Ÿ‘ค

Admin Users

Manage who has access to the Admin Panel

โ„น๏ธ
Where to find it: Admin Panel โ†’ Left sidebar โ†’ Users

โž• Add Admin User

Click "Add User". Enter name, email, and password. The new user can log into the Admin Panel with these credentials.

โœ๏ธ Edit User

Update name, email, or password. Leave password blank to keep the existing one.

๐Ÿ”ด Deactivate User

Toggle the "Active" status to deactivate a user without deleting them. Deactivated users cannot log in.

๐Ÿ—‘๏ธ Delete User

Permanently removes the admin user. Be careful โ€” you cannot delete your own account while logged in.

๐ŸŒ

Home Page (UI)

What students and parents see when they visit the website

๐Ÿฆธ Hero Section

Big banner with title, subtitle, and CTA buttons. Text is pulled from Site Configuration (Hero Title, Hero Subtitle).

๐ŸŽง Audio Lessons Preview

Shows a sample of available audio lessons. Clicking takes the user to the full Audio Lessons page.

๐Ÿ“š Workbooks Preview

Shows featured workbooks. Clicking takes the user to the Workbooks page.

๐Ÿ’ณ Plans Section

Shows available subscription plans with pricing. "Subscribe" button takes users to the Pricing page.

๐Ÿ’ฌ WhatsApp Button

Sticky green WhatsApp button at bottom-right. Phone number is set in Site Configuration โ†’ Mobile field.

๐Ÿ”— Header Navigation

4 nav items: Home, Learn (Audio/Workbooks/Quizzes), Plans, More (About/Contact/FAQ). Social icons from Site Config.

๐Ÿ”‘

Login Page (UI)

How students and parents log in

1

Select Account Type

The login page has a Student / Parent toggle at the top. Select the correct type before entering credentials.

2

Enter Email & Password

Enter the email and password used during signup. Use the eye icon to show/hide the password.

3

After Login

Students are redirected to the Student Dashboard. Parents are redirected to the Parent Dashboard. A JWT token is stored in localStorage.

โš ๏ธ
Wrong type selected? If a parent tries to log in as a student (or vice versa), login will fail. Make sure the correct toggle is selected.
โœ๏ธ

Signup / Onboarding (UI)

3-step wizard for new student registration

Step 1
Student Info
โ†’
Step 2
Parent Info
โ†’
Step 3
Review & Pay
โ†’
Step 4
Success ๐ŸŽ‰
1

Step 1 โ€” Student Information

Child's full name, email address, password, class level (1โ€“5), and age. All fields required.

2

Step 2 โ€” Parent Information

Parent's full name, email address, mobile number, and password. All fields required.

3

Step 3 โ€” Review & Pay

Shows a summary of the selected plan and entered details. For paid plans: Razorpay payment popup opens. For free plans: directly registers without payment.

4

Step 4 โ€” Success

Registration complete. Student is auto-logged in. A "Go to Dashboard" button appears. The student can now access all content.

โ„น๏ธ
Onboarding Banner: If a logged-in student has no active subscription, a yellow banner appears at the top of every page with a "View Plans" button to prompt them to subscribe.
๐Ÿท๏ธ

Pricing Page (UI)

Where users choose their subscription plan

๐Ÿ“ฆ Plan Cards

Each plan is shown as a card with name, price, features list, and a Subscribe button. Plans are fetched live from the API.

๐Ÿ†“ Free Plans

Free plans show "Get Started Free" instead of a price. Clicking goes directly to signup without payment.

๐Ÿ’ณ Paid Plans

Clicking "Subscribe" on a paid plan saves the plan to localStorage and redirects to /signup. Payment happens at Step 3 of signup.

๐Ÿ”„ Duration Toggle

If a plan has multiple durations (6/12/24 months), users can toggle between them to see different prices.

๐ŸŽต

Audio Lessons Page (UI)

How students browse and listen to audio content

1

Class Tabs

At the top, colorful pill tabs show each class (Class 1, Class 2, etc.). Clicking a class filters lessons for that grade.

2

Category Tabs

Below the class tabs, category pills appear (e.g., Mathematics, Hindi, Science). Clicking filters by subject.

3

Lesson Cards

Each lesson shows title, chapter, and duration. Clicking a card opens the Audio Player page.

4

Audio Player

Full-screen player with play/pause, seek bar, volume control, speed control, and previous/next lesson navigation. Shows lesson title and category.

๐Ÿ”’
Auth Required: The Audio Player page requires login. Unauthenticated users are redirected to the Login page.
๐Ÿ“–

Workbooks Page (UI)

Browse and view printable PDF workbooks

Students browse workbooks organized by class and subject. Clicking a workbook card opens the PDF Viewer at /workbook-details/:id. Students can view the PDF inline or download it. This page requires login.

โ“

Quiz Center (UI)

Browse and take quizzes

1

Browse Quizzes

The Quiz Center (/quiz-center) shows all available quizzes with class, subject, chapter, and question count.

2

Quiz Details

Clicking a quiz opens /quiz-details/:id โ€” shows quiz info, time limit, and a "Start Quiz" button.

3

Take Quiz

The quiz interface (/take-quiz) shows one question at a time with 4 options. A timer counts down. Students can navigate between questions.

4

Quiz Results

After submitting, /quiz-results shows: score, percentage, time taken, and a breakdown of correct/wrong answers. Results are saved to the database.

๐ŸŽ“

Student Dashboard (UI)

Personal dashboard for logged-in students

๐Ÿ‘‹ Welcome Card

Shows the student's name, class level, and subscription status.

๐Ÿ“Š Stats Overview

Total quizzes attempted, average score, best score, and total time spent on quizzes.

๐Ÿ“š Recent Workbooks

Quick access to recently viewed workbooks.

๐Ÿง  Recent Quiz Attempts

List of recent quiz attempts with scores and dates. Clicking shows full results.

๐ŸŽง Continue Listening

Quick links to recently played audio lessons.

โš ๏ธ Subscription Banner

If subscription is expired or missing, a banner prompts the student to subscribe.

๐Ÿ‘ช

Parent Dashboard (UI)

Monitor your child's learning progress

๐Ÿ‘ฆ Child Profile

Shows the linked student's name, class, and age.

๐Ÿ“Š Quiz Stats

Total attempts, completed quizzes, average score, and best score for the child.

๐Ÿ“‹ Quiz History

Full table of all quiz attempts โ€” quiz name, score, percentage, date, and time taken.

๐Ÿ’ณ Subscription Info

Current plan name, start date, end date, and status.

โ„น๏ธ
How Parent Login Works: Parent logs in at /login with the "Parent" toggle selected. They use the email and password set during signup. After login, they are redirected to /parent-dashboard.
๐Ÿ”Œ

API Reference

Key endpoints used by the platform

โ„น๏ธ
Base URL: http://localhost:5646/api โ€” All endpoints are prefixed with this.
MethodEndpointDescriptionAuth
GET/siteconfig/getSiteconfigGet site configuration (logo, social links, contact)No
GET/audioGet all audio lessonsNo
GET/audio/:idGet single audio lessonNo
GET/workbooksGet all workbooksNo
GET/quizzesGet all quizzesNo
GET/subscriptions/plans/publicGet all active subscription plans (pricing page)No
POST/students/registerRegister new student + parent + subscriptionNo
POST/auth/student-loginStudent login โ€” returns JWT tokenNo
POST/auth/parent-loginParent login โ€” returns JWT tokenNo
GET/students/:idGet student by IDYes
GET/parents/:idGet parent by IDYes
GET/quiz-attempts/student/:idGet all quiz attempts for a studentYes
POST/quiz-attempts/startStart a new quiz attemptYes
POST/quiz-attempts/:id/submitSubmit quiz answers and get scoreYes
GET/subscriptions/student/:idGet active subscription for a studentYes
POST/subscriptionsCreate a new subscriptionAdmin
GET/dashboardAdmin dashboard statsAdmin
๐Ÿ”‘
Authentication: Protected endpoints require a Bearer token in the Authorization header. The token is obtained from login and stored in localStorage as token.
๐Ÿ› ๏ธ

Troubleshooting

Common issues and how to fix them

ProblemCauseFix
API not starting Database not running or wrong credentials in .env Start MySQL service. Check API/.env for correct DB_HOST, DB_USER, DB_PASS, DB_NAME.
"Unknown column" error Database table missing a column Restart the API โ€” it auto-runs migrations on startup and adds missing columns.
Login fails with 401 Wrong credentials or expired token Check email/password. Make sure the correct toggle (Student/Parent) is selected. Log out and log back in.
Razorpay popup not opening Razorpay Key ID not configured Go to Admin โ†’ Payment Settings. Enter a valid Razorpay Key ID.
Audio not playing Invalid audio URL or CORS issue Check the audio URL in Admin โ†’ Audio Lessons. Make sure it's a direct link to an MP3 file (not a webpage).
WhatsApp button not showing Mobile number not set in Site Config Go to Admin โ†’ Site Configuration. Enter the WhatsApp number in the Mobile field.
Social icons not linking Social URLs not set in Site Config Go to Admin โ†’ Site Configuration. Fill in Facebook, Instagram, YouTube, Twitter URLs.
Student can't access content No active subscription Go to Admin โ†’ Subscriptions. Add a subscription for the student manually, or ask them to subscribe via the Pricing page.
Parent dashboard shows no data Parent not linked to a student Go to Admin โ†’ Parents. Edit the parent and select the correct student from the dropdown.
Quiz results not saving Student not logged in during quiz Make sure the student is logged in before starting a quiz. The quiz requires authentication.
๐Ÿ’ก
General Tip: If something looks broken on the UI, open the browser DevTools (F12) โ†’ Console tab. Any API errors will show there with the exact endpoint and error message, making it easy to diagnose.
๐Ÿ”„
Database Auto-Migration: The API automatically creates and updates all database tables on every startup. If you add a new column to a model's init() function, it will be added to the live database the next time the API restarts โ€” without losing any existing data.
๐ŸŽต
Sunkar Sikho โ€” Admin & Platform Guide v1.0
For technical support, contact your development team.