A modern vocabulary learning application built with React, TypeScript, and Vite.
- Interactive Word Management: Add, edit, and manage your vocabulary
- Two Layout Options: List view and Two-Column view for different learning styles
- Quiz Mode: Test your knowledge with randomized quizzes
- Local Storage: All data stored locally in your browser
- Modern UI: Clean, responsive design with dark/light theme support
- Progressive Web App: Can be installed on mobile devices
- Frontend: React 18, TypeScript, Vite
- UI Components: shadcn/ui, Tailwind CSS
- State Management: React hooks with local state
- Database: Dexie.js (IndexedDB wrapper)
- Web Server: Caddy (for production deployment)
- Node.js 18+
- npm or yarn
- Clone the repository
- Install dependencies:
npm install
- Start the development server:
npm run dev
- Open http://localhost:5173
npm run build- Build and run with docker-compose:
docker-compose up --build
- Access the application at http://localhost:8080
-
Build the Docker image:
docker build -t word-book . -
Run the container:
docker run -p 8080:8080 -e PORT=8080 word-book
The application is configured for deployment on Railway, Render, or similar platforms that support Docker deployments.
PORT: The port the application will listen on (automatically set by most platforms)
The application includes a health check endpoint at /health that returns a 200 status.
- Click the "+" button to add a new word
- Enter the term and its meaning
- Choose a color for visual organization
- Save the word
- Navigate to the Quiz tab
- Click "Start Random Quiz"
- Try to recall the meaning before revealing it
- Use Previous/Next to navigate through words
- Click "Stop" to return to the start screen
- Words per page: Control how many words display at once
- Layout: Choose between List view or Two-Column view
- Data Management: Export/Import your word collection (hidden by default)
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License.