Patna, Bihar · counselling for India admissions and study abroad +91 85870 08834 careergazers@gmail.com Talk to a counsellor

Engineering record

Platform architecture

The eleven architecture artefacts requested in the brief, plus a frank statement of what this build does and does not yet run.

Read this first

Scope of this build

Implemented and reviewable here

The full public information architecture, the directory and filter interactions, detail templates, comparison, shortlists, the assessment and predictor tools, the forms with real validation behaviour, and the three portal interfaces.

Specified but not runnable in a static preview

Authentication, the database, the CRM write paths, document storage, payments, notifications and the AI assistant's retrieval. Those are specified in the tables below and are built on the application stack at implementation time.

Information architecture

1. Sitemap

Public website — 22 areas

HomeAboutStudy in IndiaStudy AbroadCollegesUniversitiesCoursesEntrance ExamsScholarshipsCareer GuidanceCollege PredictorCourse FinderUniversity FinderCollege CompareCollege ReviewsStudent Q&AArticlesEducation NewsEventsContactFree CounsellingApply Now

Student portal — 18 areas

Student LoginStudent RegistrationStudent DashboardProfileShortlisted CollegesShortlisted UniversitiesSaved CoursesCompareMy ApplicationsMy DocumentsMy CounsellingAppointmentsPaymentsNotificationsMessagesScholarshipsCareer AssessmentAI Career Assistant

Counsellor portal — 10 areas

Counsellor DashboardAssigned LeadsStudent ProfilesFollow-upsCounselling CalendarApplicationsDocumentsNotesTasksStudent Communication

Admin portal — 25 areas

Admin DashboardStudentsLeadsCounsellorsCollegesUniversitiesCoursesExamsScholarshipsCountriesApplicationsDocumentsReviewsQ&AArticlesNewsEventsTestimonialsBannersPaymentsNotificationsSEO ManagerAnalyticsSettingsRoles & Permissions

3 journeys

2. User journey map

StageStudent intentWhat the platform doesLead/CRM event
DiscoveryUnderstand what is possibleHome, destination and course pages with plain-language explainersSession, no lead
ResearchCompare options on factsDirectory filters, detail templates, comparison tablesearch, college_view, compare
Evaluate fitTest whether I qualifyCareer Compass, college predictor with explicit bandsassessment_completed
ContactAsk a personFree counselling form, WhatsApp, callbacklead_created, lead_scored
CounsellingGet a planAppointment booking, counsellor notes, shortlist sharedappointment_booked
ApplicationSubmit correctlyDocument checklist, upload, review, stage trackingapplication_started
SubmissionBe filed on timeDeadline reminders, status log per changeapplication_submitted
Offer and visaConvert the offerDeposit and visa stage tracking, document verificationoffer_received, visa_stage
EnrolmentArrive preparedPre-departure checklist, notificationsenrolled

Operations

3. Admin and counsellor journey map

StageActorPlatform surfaceControl
InboundSystemLead created from web, WhatsApp, event, referral or walk-inSource is recorded, never guessed
RoutingAdminLead assignment by destination and capacityRound-robin with manual override
First contactCounsellorAssigned leads list with next follow-upFollow-up reminders and snooze
QualificationCounsellorLead score, notes, call outcomeStage transition requires a note
CounsellingCounsellorCalendar with day/week/month viewsCounsellor blocks unavailable time
ApplicationCounsellorApplication stage update with audit logEvery change writes actor, time, from-state, to-state
DocumentsCounsellorReview queue with approve or re-uploadIdentity documents are view-only after verification
ReportingAdminFunnel, counsellor performance, destination mixMetrics are computed, not entered

PostgreSQL

4. Database entity relationship diagram

Core entities shown. Catalogue entities (Colleges, Universities, Campuses, Countries, States, Cities, Courses, CourseSpecializations, CollegeCourses, UniversityCourses, Exams, ExamDates, ExamCutoffs, Scholarships, Reviews, Questions, Answers, Articles, News, Events, Testimonials, Messages, SEORecords, Banners, FAQs) follow the same pattern: a primary key, foreign keys to the parent catalogue entity, a provenance block, and a soft-delete flag.

Usersid PKemailpassword_hashrole_id FKcreated_atStudentProfilesid PKuser_id FKlevelhome_statebudget_bandCounsellorsid PKuser_id FKspecialisationcapacityRolesid PKnamedescriptionPermissionsid PKrole_id FKcapabilityscopeLeadsid PKstudent_id FKcounsellor_id FKsourcestagescoreLeadActivitiesid PKlead_id FKtypeoutcomenoteFollowUpsid PKlead_id FKdue_atstatusApplicationsid PKstudent_id FKstage_id FKintakeApplicationStagesid PKcodesequenceis_terminalDocumentsid PKapplication_id FKcategorystatusstorage_keyAppointmentsid PKstudent_id FKcounsellor_id FKslot_startAuditLogsid PKactor_id FKentityfrom_stateto_statePaymentsid PKstudent_id FKamountstatusinvoice_noNotificationsid PKuser_id FKchannelpayload

Data layer

Index and integrity plan

ConcernImplementation
Full-text searchGenerated tsvector column on catalogue tables with a GIN index; PostgreSQL first, OpenSearch only when scale requires it
PaginationKeyset pagination on (sort_key, id) to avoid deep-offset cost
N+1 preventionRelation loaders on list endpoints; the card payload is one query
Referential integrityForeign keys with ON DELETE RESTRICT for catalogue parents, ON DELETE CASCADE for child rows only
AuditAppend-only AuditLogs table; no UPDATE or DELETE grant for application roles
ProvenanceEvery volatile column is paired with source and verified_at, so the UI can render the stamp
Soft deletedeleted_at on catalogue tables so published URLs survive an unpublish action

Contract

5. API architecture

GroupEndpointsAuthNotes
Catalogue (read)GET /colleges, /colleges/{slug}, /universities, /courses, /exams, /scholarships, /countriesPublicCacheable, filter parameters validated against an allow-list, provenance fields always returned
SearchGET /search?q=&type=&page=PublicFull-text with trigram fallback for typo tolerance; server-side pagination only
ComparePOST /comparePublicBody carries 2-4 entity refs; the server returns the attribute matrix and per-row provenance
ToolsPOST /predictor/run, POST /assessment/submitPublic (rate limited)Modular per-exam predictors; the response always includes the uncertainty band
LeadsPOST /leads, PATCH /leads/{id}, POST /leads/{id}/activitiesPublic create, staff updateCreation is idempotent against a submission token; every mutation writes an activity row
AuthPOST /auth/register, /auth/login, /auth/otp/request, /auth/otp/verify, /auth/logoutSessionArgon2id hashing, rotating sessions, CSRF token on state-changing routes from cookie sessions
StudentGET/PATCH /me, /me/shortlist, /me/applications, /me/documents, /me/appointmentsStudentOwnership enforced in the query, not the controller
StaffGET /staff/leads, PATCH /staff/applications/{id}/stage, POST /staff/documents/{id}/reviewCounsellorScope-limited query builders per role
AdminCRUD /admin/{catalogue}, POST /admin/import, GET /admin/analyticsAdminEvery write writes an audit row; imports validate before commit
AIPOST /ai/assistant/messagePublic (rate limited)Retrieval over the verified catalogue only; responses carry citations and refuse to answer outside the dataset

Reuse

6. Component architecture

Shared UI components

CollegeCardUniversityCardCourseCardExamCardScholarshipCardArticleCardReviewCardEventCardSearchFiltersCompareTableShortlistButtonApplyButtonCounsellingCTADashboardCardApplicationTimelineDocumentUploaderNotificationPanelProvenanceFieldEmptyStateSkeletonBlockErrorSummaryToast

Layout and structure

SiteHeaderMainNavUtilityBarMobileActionBarFloatingActionsSiteFooterPageHeadStickySubNavSidebarLayoutDashLayoutDrawerShellAIThread

Cards are data-driven: the same CollegeCard renders in the directory, in related rails, in the shortlist and in comparison. ProvenanceField is the single component that decides how a verified, sample or unverified value is rendered, so no page can accidentally present an unverified number as fact.

Identity

7. Authentication architecture

LayerDecisionReason
Primary credentialEmail or mobile plus passwordBoth are already collected as lead fields
Second routeOne-time code over SMSAccessibility: WCAG 2.2 requires an alternative to memorisation
OptionalGoogle OAuthReduces friction for student accounts, never the only route
Password storageArgon2id with per-user salt and a tuned cost parameterCurrent recommended practice for password hashing
SessionServer-side session with a rotating opaque token in a Secure, HttpOnly, SameSite=Lax cookieRevocable, unlike a stateless token
CSRFDouble-submit token on every state-changing request from a cookie sessionCookie sessions need it; bearer-token APIs do not
ElevationSecond factor required for Admin and Super AdminPrivileged accounts hold the widest data access
Rate limitingPer-IP and per-account limits on login, OTP and public form endpointsCredential stuffing and lead-spam defence
RecoverySingle-use, time-boxed reset token delivered to the verified channelNo security questions

Role-based access control

8. Permission matrix

Permission is enforced in the data-access layer, not the interface. Hiding a button is a convenience, never the control.

CapabilitySuper AdminAdminCounsellorContent ManagerStudent
Manage roles and permissionsFullNoNoNoNo
Manage staff accountsFullCreate and editNoNoNo
Catalogue create and editFullFullReadEditorial fields onlyPublic read
Publish and unpublishFullFullNoOwn contentNo
View any student recordFullFullAssigned onlyNoSelf only
Change application stageFullFullAssigned onlyNoNo
Review documentsFullFullAssigned onlyNoUpload own
Manage leads and assignmentFullFullAssigned onlyNoOwn enquiries
Moderate reviews and Q&AFullFullAnswerModerateSubmit and report
View payments and invoicesFullReadNoNoOwn invoices
Import datasetsFullFullNoNoNo
Read audit logFullReadOwn actionsOwn actionsNo

Discoverability

9. SEO architecture

ElementImplementation
RenderingServer-rendered catalogue and detail pages so crawlers receive complete content; client hydration only for interactive filtering
URL pattern/colleges/{slug}, /courses/{slug}, /exams/{slug}, /scholarships/{slug}, /study-in-{country}, /articles/{slug}
CanonicalAbsolute canonical on every page; filtered directory views canonicalise to the base path with parameters excluded from the index
Title and descriptionTemplate per entity type with the differentiator first, held inside length limits
SitemapGenerated sitemap index split by entity type, with lastmod driven by the record's own updated_at
RobotsDisallow on portal routes and preview routes; the sitemap reference at the root
Structured dataEducationalOrganization and WebSite sitewide; Course, Article, FAQPage and BreadcrumbList where the page genuinely carries that content
Review markupEmitted only when the page publishes real, moderated reviews — never on aggregate claims
Internal linkingRelated courses, related institutions, exam-to-course and course-to-institution links generated from the join tables
PaginationRel next and prev plus self-canonical per page
SpeedStatic generation for catalogue pages, responsive images with intrinsic dimensions, lazy loading below the fold, code splitting per route
Local SEOLocalBusiness markup added only after the client confirms the address, phone and hours

Runtime

10. Deployment architecture

LayerChoiceNotes
FrameworkNext.js with TypeScriptServer rendering for the catalogue, static generation where data changes rarely
UI layerTailwind CSS over an accessible component primitives baseToken-driven, so the brand palette resolves from one place
DatabasePostgreSQLRelational integrity for the catalogue, the funnel and the audit trail
ORMPrisma with explicit migrationsTyped queries and a reviewable migration history
Object storageS3-compatible private bucket for documentsObjects reachable only through short-lived signed URLs; no public read
SearchPostgreSQL full-text firstOpenSearch only when the catalogue outgrows it; the query interface stays the same
Cache and CDNEdge cache in front of catalogue pages, purge on publishFiltered views bypass the cache
Background workQueue for notifications, imports and document scanningNever inline in a request
ObservabilityStructured request logs, error tracking, and the audit table for state changesNo personal data in log payloads
EnvironmentsPreview, staging, production with separate credentialsPreview data is never production data
This previewStatic hosted outputHTML, CSS and JavaScript only — no server process, so nothing that requires a runtime is faked

Delivery order

11. Feature priority list

PriorityScopeContents
P0 — launch criticalThe platform must not go live without theseHomepage, India colleges and universities, courses, study-abroad destinations, abroad universities, search, filters, college, university and course detail pages, compare, shortlist, counselling form, student registration and login, student dashboard, lead CRM, counsellor dashboard, admin CMS, applications, document upload, notifications, articles, SEO foundations, WhatsApp entry point, AI assistant with grounded retrieval
P1 — important, shortly after launchAdds depth without blocking the launchCollege predictor for the top exams, career assessment, reviews and Q&A modules, events, payments, CSV import, analytics dashboards, SEO manager, counsellor calendar with time-blocking
P2 — expansionBuilt once the core is stable and the data is verifiedMobile app, push notifications, recommendation engine, SOP and document AI assistants, video counselling, partner portal, subscriptions, affiliate tracking, multi-city offices, multi-language, marketing automation, CRM integrations

Editorial control

Data accuracy rules encoded in the platform

Never fabricated

  • Rankings and accreditations
  • Fees and scholarship amounts
  • Placement and salary figures
  • Admission and exam deadlines
  • Visa and immigration rules
  • Local-business details

How the platform enforces it

  • Volatile columns are paired with source and verified_at
  • A single ProvenanceField component renders every value
  • A missing value renders the required notice, never an estimate
  • The AI assistant answers only from verified rows and cites them
  • Citation of unverified data is refused at the retrieval layer

Next step

Ready for the implementation phase

This build establishes the information architecture, the design system and the interaction model. The application stack work starts from here.

Free counselling WhatsApp +91 85870 08834