Skip to content

A comprehensive platform for coding interview preparation focused on JavaScript/TypeScript

License

Notifications You must be signed in to change notification settings

msiric/memoized

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Memoized

An open-source JavaScript/TypeScript interview prep platform

WebsiteFeaturesQuick StartArchitecture

Production License: MIT


Features

  • Structured courses: JavaScript and Data Structures & Algorithms tracks with progressive curriculum
  • Practice problems: 450+ coding and theory problems linked to lessons with difficulty ratings
  • Progress tracking: Mark lessons and problems as complete with visual analytics dashboard
  • Premium content system: Free and premium access tiers with Stripe subscription management
  • Full-text search: Fast, relevant search across all content powered by MeiliSearch
  • OAuth authentication: Sign in with GitHub or Google via NextAuth.js
  • MDX content: Rich lessons with syntax-highlighted code, interactive components and custom annotations
  • Pre-compiled content: MDX serialized at build/sync time for fast page loads
  • Resources library: Standalone reference materials for data structures, async patterns and more

Quick Start

Requirements: Node.js 18+, Yarn, Docker Desktop

git clone https://github.com/msiric/memoized.git
cd memoized
yarn install
yarn setup:dev
yarn dev

Open http://localhost:3000

Architecture

Frontend       → Next.js 14 (App Router) + React + Tailwind CSS
API Layer      → Server Actions + Route Handlers + NextAuth.js
Services       → Course · Lesson · Problem · Resource · Subscription · User
Data           → PostgreSQL (Prisma ORM) + MeiliSearch
Integrations   → Stripe (Payments) · Resend (Email) · Sentry (Monitoring)

Data Model

  • Courses → Sections → Lessons → Problems
  • Resources: Standalone reference content (linked to lessons optionally)
  • Users → Accounts (OAuth) → Customers (Stripe) → Subscriptions
  • Progress: UserLessonProgress + UserProblemProgress tracking

Content Pipeline

  1. MDX files with _lessons.json metadata define curriculum structure
  2. yarn sync:all parses MDX, serializes with Shiki highlighting, stores in PostgreSQL
  3. yarn index indexes lessons in MeiliSearch for search
  4. Pre-serialized content hydrates instantly on page load

Manual Setup

  1. Clone and install:

    git clone https://github.com/msiric/memoized.git
    cd memoized
    yarn install
  2. Environment setup:

    cp .env.example .env.local

    Update database URL in .env.local:

    DATABASE_URL="postgresql://postgres:postgres@localhost:5432/postgres"
    MEILISEARCH_HOST="http://localhost:7700"
    MEILISEARCH_MASTER_KEY="dev-master-key"
    
  3. Start services:

    docker-compose up -d  # PostgreSQL + MeiliSearch
  4. Database setup:

    yarn migrate:dev
  5. Content setup:

    yarn setup:content    # Auto-detects content source (see below)
    yarn sync:all:dev     # Syncs all content to database

    Content Sources (auto-detected by setup:content):

    • Premium content: If ../memoized-content exists as a sibling directory, symlinks are created automatically. Changes are instantly reflected - just run yarn sync:all:dev after editing.
    • Sample content: If no premium content is found, sample content from src/samples/ is copied for open-source development.
  6. Start development:

    yarn dev

Tech Stack

Category Technology
Framework Next.js 14 (App Router)
Language TypeScript
Database PostgreSQL + Prisma
Search MeiliSearch
Styling Tailwind CSS
Content MDX + Shiki
Auth NextAuth.js (GitHub, Google)
Payments Stripe
Email Resend
Testing Vitest
Monitoring Sentry
Deployment Vercel

Project Structure

memoized/
├── src/
│   ├── app/              # Next.js App Router (pages, API routes)
│   ├── components/       # React components
│   ├── services/         # Business logic (course, lesson, problem, subscription)
│   ├── scripts/          # Sync, index and setup scripts
│   ├── mdx/              # MDX plugins (remark, rehype, recma)
│   ├── content/          # Working directory for course content
│   ├── samples/          # Sample content for local development
│   ├── lib/              # Prisma, Stripe, MeiliSearch, Resend clients
│   ├── hooks/            # React hooks
│   ├── contexts/         # Zustand stores (auth, progress)
│   ├── constants/        # App constants and curriculum config
│   └── types/            # TypeScript types
├── prisma/               # Database schema and migrations
├── public/               # Static assets (images, icons)
└── docker-compose.yml    # Local PostgreSQL + MeiliSearch

Content System

Memoized uses a hybrid content architecture. Sample content is provided for local development:

src/samples/
├── js-track/
│   ├── page.mdx                   # Course overview
│   └── core-fundamentals/
│       ├── _lessons.json          # Lesson metadata + problems
│       └── variables/
│           └── page.mdx           # Lesson content
└── dsa-track/

Development Workflow

  1. Setup: yarn setup:content - Copy sample content
  2. Sync: yarn sync:all:dev - Sync to local database
  3. Develop: yarn dev - Start development server

Contributing

Issues and PRs welcome.

License

MIT

About

A comprehensive platform for coding interview preparation focused on JavaScript/TypeScript

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors