Skip to main content

Development Environment

FlashMind is built with a modern development stack that makes it easy to customize and extend.

Project Structure

Key Technologies

FlashMind uses Next.js with the App Router for:
  • Server-side rendering
  • API routes
  • File-based routing
  • Built-in optimizations
Convex provides:
  • Real-time database
  • Serverless functions
  • Automatic API generation
  • Type-safe queries and mutations
Clerk handles:
  • User authentication
  • Session management
  • User profiles
  • Multi-factor authentication
Tailwind CSS enables:
  • Utility-first styling
  • Responsive design
  • Dark mode support
  • Custom design system

Customization

Styling

FlashMind uses Tailwind CSS with a custom design system. You can customize:

Database Schema

Modify the Convex schema to add new fields or tables:
convex/schema.ts

Spaced Repetition Algorithm

The spaced repetition algorithm can be customized in convex/spacedRepetition.ts:

Adding Features

Creating New Pages

  1. Add a new page in the app/ directory:
app/analytics/page.tsx
  1. Add navigation in components/navigation.tsx

Creating Convex Functions

Add new backend functions in the convex/ directory:
convex/analytics.ts

Adding Components

Create reusable components in the components/ directory:
components/study-streak.tsx

Testing

Running Tests

Writing Tests

Create tests alongside your components:
__tests__/study-streak.test.tsx

Deployment

Environment Variables

Set up your production environment variables:
.env.production

Build and Deploy

1

Build the application

2

Deploy to Convex

3

Deploy frontend

Deploy to Vercel, Netlify, or your preferred platform
Consider setting up GitHub Actions for automatic deployments when you push to your main branch.