A spaced repetition learning application that helps you master and retain what you study using scientifically proven review intervals.
- Spaced Repetition System: Review lessons at optimal intervals (0, 1, 3, and 7 days) to maximize retention
- Flexible Study Items: Save links, difficult words, or sentences you want to remember
- Waiting List: Stage lessons you plan to learn later, then promote them into the main study flow when ready
- Daily Reviews: Get reminded to review at the right time
- Progress Tracking: Visualize your learning journey with calendar view
- User Authentication: Secure authentication powered by Supabase
- Responsive Design: Works seamlessly on desktop and mobile devices
- Framework: Next.js 16 with React 19
- Language: TypeScript
- Database: Supabase (PostgreSQL)
- Authentication: Supabase Auth
- Styling: Tailwind CSS v4
- UI Components: Radix UI primitives
- State Management: Zustand
- Form Handling: React Hook Form with Zod validation
- Date Utilities: date-fns
- Icons: Lucide React
- Node.js 18+ installed
- A Supabase account and project
- Clone the repository:
git clone <repository-url>
cd daily-study-review- Install dependencies:
pnpm install
# or
npm install
# or
yarn install- Set up environment variables:
Create a .env file in the root directory with the following variables:
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key- Set up the database:
Run the SQL scripts in the scripts/ directory in your Supabase SQL editor:
001_create_lessons_table.sql- Creates the lessons and review_schedule tables002_create_review_trigger.sql- Sets up automatic review scheduling003_add_lesson_date_column.sql- Adds explicit lesson dates to avoid timezone drift004_fix_review_schedule_trigger.sql- Ensures review schedules stay in sync005_add_linked_lessons_relation.sql- Allows lessons to reference a related lesson006_create_waiting_lessons_table.sql- Adds the waiting list table plus the promotion helper function007_sync_review_schedule_on_lesson_date_update.sql- Keeps the review schedule aligned whenever a lesson's date changes
- Run the development server:
pnpm dev
# or
npm run dev
# or
yarn dev- Open http://localhost:3000 in your browser
.
├── app/ # Next.js app directory
│ ├── auth/ # Authentication pages (login, sign-up)
│ ├── dashboard/ # Dashboard and main app features
│ ├── globals.css # Global styles
│ ├── layout.tsx # Root layout
│ └── page.tsx # Landing page
├── components/ # Reusable UI components
│ └── ui/ # shadcn/ui components
├── hooks/ # Custom React hooks
├── lib/ # Utility functions and configurations
├── scripts/ # Database setup scripts
├── stores/ # Zustand state management
├── styles/ # Additional styles
└── public/ # Static assets
Stores user's learning content with support for three types:
- link: Web links to articles, videos, or resources
- word: Difficult words to remember
- sentence: Important sentences or phrases
Tracks the spaced repetition schedule for each lesson:
- Review intervals: 0, 1, 3, and 7 days
- Completion tracking
- Automatic scheduling via database triggers
- Add Study Items: Create new lessons by adding links, words, or sentences you want to remember
- Automatic Scheduling: The system automatically creates a review schedule with intervals at 0, 1, 3, and 7 days
- Daily Reviews: Check your dashboard to see which study items are due for review today
- Mark as Complete: Mark reviews as complete after studying them
- Track Progress: View your study progress on the calendar
pnpm dev- Start development serverpnpm build- Build for productionpnpm start- Start production serverpnpm lint- Run ESLint
This project is private and not licensed for public use.
This is a private project. Contributions are not currently accepted.