A modern language learning platform focused on German-English-Bangla translations, built with Next.js, TypeScript, and PostgreSQL.
- 🔐 Authentication with Google OAuth and Email/Password
- 📚 Word management system with German-English-Bangla translations
- 🎯 Spaced repetition learning system
- 📱 Mobile-first responsive design
- 🌓 Dark/Light theme support
- 🔍 Advanced search with filters
- 📊 Progress tracking
- Frontend: Next.js 14, TypeScript, Tailwind CSS, Shadcn/ui
- Backend: Next.js API Routes
- Database: Neon PostgreSQL with Drizzle ORM
- Authentication: NextAuth.js
- Form Handling: React Hook Form with Zod validation
- State Management: TanStack Query
- Styling: Tailwind CSS
- Node.js 18+ and npm
- PostgreSQL database (Neon recommended)
- Google OAuth credentials
Create a .env file in the root directory with the following variables:
# Database
DATABASE_URL="your-neon-postgresql-url"
# NextAuth
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your-nextauth-secret"
# Google OAuth
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"
# Node Environment
NODE_ENV="development"-
Clone the repository:
git clone https://github.com/yourusername/recall.git cd recall -
Install dependencies:
npm install
-
Set up the database:
npm run db:generate npm run db:migrate
-
Start the development server:
npm run dev
The application will be available at http://localhost:3000.
src/
├── app/ # Next.js app directory
│ ├── api/ # API routes
│ ├── auth/ # Authentication pages
│ └── (routes)/ # Application routes
├── components/ # React components
├── lib/ # Utility functions and configurations
│ ├── db/ # Database configuration and schema
│ └── auth/ # Authentication utilities
└── types/ # TypeScript type definitions
To create a new migration:
npm run db:generateTo apply migrations:
npm run db:migrateThis project uses ESLint and Prettier for code formatting. To format your code:
npm run format- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.