A modern, scalable Next.js application built with TypeScript, Tailwind CSS, and internationalization support.
- Next.js 15 with App Router
- TypeScript with strict type checking
- Tailwind CSS for styling
- Internationalization (i18n) with English and Persian support
- Theme Support (Light/Dark/System)
- Responsive Design with mobile-first approach
- Error Boundaries for better error handling
- Loading States and skeleton components
- API Client with retry logic and error handling
- Context Providers for state management
- Biome for linting and formatting
- Optimized Performance with code splitting and lazy loading
- Framework: Next.js 15
- Language: TypeScript
- Styling: Tailwind CSS
- UI Components: Radix UI + Custom components
- Icons: Lucide React
- Animations: Framer Motion
- Linting: Biome
- Package Manager: pnpm
src/
├── app/ # Next.js App Router
│ ├── [locale]/ # Internationalized routes
│ ├── globals.css # Global styles
│ └── layout.tsx # Root layout
├── components/ # Reusable components
│ ├── ui/ # Base UI components
│ ├── navbar/ # Navigation components
│ ├── hero/ # Hero section components
│ └── magicui/ # Custom UI components
├── contexts/ # React contexts
│ ├── auth-context.tsx # Authentication context
│ └── theme-context.tsx # Theme context
├── hooks/ # Custom hooks
│ ├── use-translation.tsx
│ └── use-appearance.tsx
├── lib/ # Utility libraries
│ ├── api-client.ts # API client
│ ├── constants.ts # App constants
│ ├── env.ts # Environment configuration
│ ├── i18n.ts # Internationalization
│ └── utils.ts # Utility functions
├── locales/ # Translation files
│ ├── en.json # English translations
│ └── fa.json # Persian translations
└── types/ # TypeScript type definitions
├── common.ts # Common types
└── index.d.ts # Main type exports
- Node.js 18+
- pnpm (recommended) or npm
- Clone the repository:
git clone <repository-url>
cd menteeno_frontend- Install dependencies:
pnpm install- Set up environment variables:
cp .env.example .env.local- Run the development server:
pnpm devOpen http://localhost:3000 to view the application.
pnpm dev- Start development serverpnpm build- Build for productionpnpm start- Start production serverpnpm lint- Run lintingpnpm format- Format code
The application supports multiple languages:
- English (
/en) - Default language - Persian (
/fa) - RTL support
Language switching is handled automatically through the middleware and context providers.
The application supports three theme modes:
- Light - Light color scheme
- Dark - Dark color scheme
- System - Follows system preference
Theme preferences are persisted in localStorage and cookies.
Create a .env.local file with the following variables:
NEXT_PUBLIC_API_URL=http://localhost:8000/api
NEXT_PUBLIC_APP_URL=http://localhost:3000
NEXT_PUBLIC_APP_NAME=Menteeno
NEXT_PUBLIC_APP_DESCRIPTION=A place to grow your skillsThe project uses strict TypeScript configuration with:
- Strict type checking
- No implicit returns
- No fallthrough cases in switch
- Exact optional property types
- Path mapping for clean imports
- Push your code to GitHub
- Connect your repository to Vercel
- Deploy automatically
The application can be deployed to any platform that supports Next.js:
- Netlify
- AWS Amplify
- Railway
- DigitalOcean App Platform
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request
This project is licensed under the MIT License.
- Next.js - React framework
- Tailwind CSS - CSS framework
- Radix UI - UI primitives
- Lucide - Icon library
The Supabase course platform is integrated into this Next.js app at /panel (e.g. https://menteeno.ir/panel).
- Add
NEXT_PUBLIC_SUPABASE_URLandNEXT_PUBLIC_SUPABASE_ANON_KEYto.env.local(see.env.example). - Run SQL in
supabase/migrations/(and optional seed) in your Supabase project. pnpm run devthen open http://localhost:3000/panel.
Supabase Auth redirect URL: http://localhost:3000/panel/auth/callback (and production https://menteeno.ir/panel/auth/callback).