- Create a project in Firebase Console.
- Authentication โ Sign-in method: enable Email/Password and Phone.
- Project settings โ General โ Your apps (Web) โ Register app and copy config into
firebase-config.js. - Authentication โ Settings โ Authorized domains: ensure
localhostis present. If you serve on another host/port, add that domain.
Phone sign-in requires reCAPTCHA. Opening HTML files directly with file:// will fail reCAPTCHA. Use a local web server.
- From this folder, run one of:
npx serve -p 5173(or)npx http-server -p 5173(or any static server)
- Visit
http://localhost:5173/signup.htmlto create an account, then trylogin.htmlanddashboard.html.
- Get a Firebase Admin service account JSON:
- Firebase Console โ Project settings โ Service accounts โ Generate new private key
- Save it as
server/serviceAccountKey.jsonor set env varGOOGLE_APPLICATION_CREDENTIALSto its path.
- Install and start the server:
cd servernpm installnpm run start(starts onhttp://localhost:4000)
- Frontend uses Firebase JS SDK for signup/login.
signup.htmloptionally links your phone via SMS code during registration.dashboard.htmlgets an ID token (getIdToken) and callshttp://localhost:4000/api/protectedwithAuthorization: Bearer <token>.- Express verifies the token with Firebase Admin and returns user data.
- Node 18+ recommended.
- If SMS is not arriving, ensure the phone sign-in test numbers or proper reCAPTCHA domain settings, and avoid
file://.
Static site you can host on GitHub Pages. Includes:
- Landing page with 3D parallax and starfield
- 15-question placement quiz (grammar, reading, listening)
- AI-like personalized course generator (client-side mock)
- Games (Word Match, Sentence Builder)
- Pronunciation improver using Web Speech API
Open index.html in your browser, or serve the folder with any static server.
- Create a new GitHub repository and push this project.
- In GitHub, go to Settings โ Pages.
- Set "Deploy from a branch" and choose
main(or your default) and/ (root). - Save. Your site will be available at the Pages URL in ~1 minute.
If you deploy to a subpath (e.g. username.github.io/repo), ensure links are relative (they are in this project).
- In your repo, create a file named
Cindieat the root with your domain name. - Configure your DNS to point
Arecords to GitHub Pages and add aCindieto your repo URL. - In GitHub Pages settings, set the custom domain and enforce HTTPS.
This is 100% client-side. No data leaves your browser. Quiz results are stored in localStorage to generate your course.
- Pronunciation uses the Web Speech API. For best results, use Chrome-based browsers.
- Listening items use text-to-speech so audio works offline.
A bold, edgy, and modern language learning website built with Next.js, React, and Tailwind CSS. Learn English and German through interactive courses, games, and AI-powered pronunciation practice.
- Left Side: Lesson content with vocabulary, grammar explanations, and short stories
- Right Side: Interactive multiple-choice questions based on the lesson
- Vocabulary Highlighting: New words with playful animations and "Mark as Learned" feature
- Progress Tracking: Track completion and mastery levels
- Vocabulary Matching: Match English words with German translations
- Grammar Builder: Complete sentences with correct grammar
- Speed Quiz: Answer questions as fast as possible in 60 seconds
- Microphone Input: Record yourself speaking
- Speech Recognition: Real-time transcription using Web Speech API
- Instant Feedback: Score and improvement suggestions
- Progress History: Track your pronunciation journey
- Progress Analytics: Visual progress bars and charts
- Achievement System: Unlock badges and rewards
- Learning Streaks: Track daily study consistency
- Performance Metrics: Detailed statistics and insights
- Frontend: Next.js 14, React 18, TypeScript
- Styling: Tailwind CSS with custom animations
- Animations: Framer Motion for smooth transitions
- Icons: Lucide React for consistent iconography
- Speech Recognition: Web Speech API for pronunciation analysis
- Responsive Design: Mobile-first approach with full responsiveness
- Bold & Edgy: Black backgrounds with neon/gradient accents
- Modern UI: Large buttons with hover animations and click effects
- Smooth Transitions: Framer Motion animations throughout
- Neon Glow Effects: Eye-catching visual elements
- Responsive Layout: Works perfectly on desktop, tablet, and mobile
src/
โโโ app/ # Next.js app directory
โ โโโ courses/ # Interactive course lessons
โ โโโ games/ # Language learning games
โ โโโ pronunciation/ # Pronunciation practice
โ โโโ dashboard/ # Progress tracking dashboard
โ โโโ globals.css # Global styles and Tailwind
โ โโโ layout.tsx # Root layout component
โ โโโ page.tsx # Home page
โโโ components/ # Reusable components
โ โโโ Navigation.tsx # Main navigation bar
โโโ hooks/ # Custom React hooks
- Node.js 18+
- npm or yarn
git clone <repository-url>
cd cindie-language-appnpm installnpm run devNavigate to http://localhost:3000
npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLint
The courses page implements the exact layout specified:
- Left Side: Lesson content with vocabulary highlighting
- Right Side: Interactive quiz questions
- Vocabulary Management: Click to mark words as learned
- Progress Tracking: Quiz results and scoring
Three fully functional language games:
- Vocabulary Matching: Memory card game with scoring
- Grammar Builder: Sentence completion with feedback
- Speed Quiz: Timed question answering
- Real-time Recording: Uses MediaRecorder API
- Speech Recognition: Web Speech API integration
- Instant Analysis: Score calculation and feedback
- Progress History: Track improvement over time
- Visual Progress: Progress bars for each language level
- Activity Charts: Weekly learning activity visualization
- Achievement System: Unlockable badges and points
- Statistics Overview: Comprehensive learning metrics
The app uses a custom color palette defined in tailwind.config.js:
- Neon Colors: Pink, blue, green, purple
- Dark Theme: Multiple shades of dark backgrounds
- Gradients: Beautiful color transitions throughout
- Framer Motion: Smooth page transitions and micro-interactions
- Custom CSS: Tailwind animations with custom keyframes
- Hover Effects: Interactive button and card animations
- Mobile First: Optimized for mobile devices
- Tablet Support: Responsive grid layouts
- Desktop Experience: Full-featured desktop interface
- Touch Friendly: Optimized for touch interactions
- Modern Browsers: Chrome, Firefox, Safari, Edge
- Speech Recognition: Requires HTTPS for microphone access
- Progressive Enhancement: Graceful fallbacks for older browsers
npm run build
vercel --prodnpm run build
npm run start- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License.
- Next.js Team for the amazing framework
- Tailwind CSS for the utility-first CSS framework
- Framer Motion for smooth animations
- Lucide for beautiful icons
For questions or support, please open an issue in the repository.
Happy Learning! ๐โจ