Suspense fallback
Preparing a focused brutalist interface for projects, skills, writing, and product work.
Suspense fallback
Software Architecture + 2026-06-11 + 12 min read
A practical architecture guide for building online learning products with Next.js, NestJS, PostgreSQL, Prisma, authentication, dashboards, practice flows, admin tools and SEO pages.

An online learning product needs two things at the same time: public pages that help people discover the product, and private app workflows that help learners make progress. That is why a full-stack architecture with Next.js, NestJS, PostgreSQL and Prisma is a strong choice for many EdTech products.
For a TOEIC platform like Captoc.site, the product is not only a homepage. It includes course pages, blog, pricing, onboarding, practice tests, vocabulary, grammar, dashboard, roadmap, notifications and admin tools. Each part has different technical requirements.
The public layer should be optimized for discovery and conversion. It usually includes:
Next.js works well here because metadata, static generation, dynamic routes and image optimization can be handled close to the page. SEO pages should load quickly, have clear HTML structure and expose canonical URLs, Open Graph images, sitemap entries and structured data where relevant.
The learner app is where retention happens. It should help users understand progress and choose the next action.
Typical app modules include:
This layer benefits from React components, server state management and predictable API contracts. The UI must handle loading, empty, error and completed states because learning data is never perfectly available.
NestJS is a good backend option when the product has many modules. Instead of putting all logic into a few route handlers, each domain can have its own module:
This organization helps the team add features without turning the backend into one large file of unrelated logic. It also makes testing and maintenance easier.
Learning platforms are relational by nature. A learner has sessions. A session has answers. A test has parts, groups and questions. A vocabulary topic has words. A payment belongs to a user. A notification belongs to a user.
PostgreSQL fits this structure well. Prisma helps model these relationships clearly and gives developers typed database access.
Important tables often include:
Good schema design is one of the highest-leverage decisions in an EdTech product. If the data model is weak, analytics and personalization become difficult later.
Most learning products need both public and private areas. Public pages should be crawlable. Dashboard, profile, test results and admin pages should be protected.
A practical setup includes:
Authentication should be boring and reliable. Learners should not lose progress because of unstable sessions.
Many teams underestimate admin tools. In EdTech, admin workflows are not optional. Content must be created, imported, reviewed and corrected.
Useful admin modules include:
Admin speed affects content quality. If teachers or operators cannot update material easily, the learning platform becomes stale.
The public website should attract learners. The app should keep them. Strong EdTech SEO usually needs both informational and commercial pages:
Each page should link naturally into the product. For example, a blog post about Part 5 grammar can link to a grammar practice module. A vocabulary resource can link to a spaced repetition flow.
Many learners study on phones during short breaks. Performance is not a luxury. Slow pages reduce learning consistency.
Important performance practices include:
For online learning, speed supports habit. If the app opens quickly, the learner is more likely to practice.
A strong EdTech platform is a product system, not just a website. Next.js can power the SEO and user interface layer. NestJS can organize backend business logic. PostgreSQL and Prisma can model learning data clearly. Together, they create a foundation for courses, practice, analytics, payments, admin tools and long-term growth.
For teams building a TOEIC product, language learning app or online course platform, the main lesson is simple: design the architecture around the learner journey. Discovery, onboarding, practice, review and retention should all be visible in the code.
Yes. Next.js supports SEO pages, app routes, dashboard interfaces, fast rendering, image optimization and deployment-friendly frontend architecture.
NestJS helps organize modules for users, tests, lessons, payments, admin workflows, notifications and analytics.
PostgreSQL with Prisma works well because learning products need relational data for users, courses, questions, sessions, answers, vocabulary, progress and transactions.
Have an idea or project?
Let's build something amazing.アイデアやプロジェクトがありますか?素晴らしいものを一緒に作りましょう。