A modern web application designed to help users prepare for the Armed Services Vocational Aptitude Battery (ASVAB) test. Features include practice tests, progress tracking, and a customizable dark/light theme interface.
- 🌓 Dark/Light Theme Toggle
- 📝 ASVAB Practice Tests
- 🔐 User Authentication
- 📊 Progress Tracking
- 💪 Comprehensive Test Categories
- 📱 Responsive Design
- Framework: Next.js 14 (App Router)
- Styling: Tailwind CSS
- UI Components: shadcn/ui
- Authentication: Clerk
- Database: Supabase
- Node.js 18+ installed
- npm or yarn package manager
- Clone the repository
git clone https://github.com/yourusername/asvab-prep.git
cd asvab-prep- Install dependencies
npm install
# or
yarn install- Create a
.env.localfile in the root directory and add your environment variables:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
CLERK_SECRET_KEY=your_clerk_secret_key
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key- Start the development server
npm run dev
# or
yarn dev- Open http://localhost:3000 with your browser
# Start development server
npm run dev
# Build for production
npm run build
# Start production server
npm start
# Run linting
npm run lintThe theme toggle functionality is implemented using the following components:
ThemeProvider: Manages theme stateThemeToggle: Button component for switching themes
To use the theme toggle in your components:
import { ThemeToggle } from "@/components/theme-toggle"
import { ThemeProvider } from "@/components/theme-provider"
// Wrap your app with ThemeProvider
<ThemeProvider>
<YourComponent>
<ThemeToggle />
</YourComponent>
</ThemeProvider>asvab-prep/
├── app/ # Next.js app router pages
├── components/
│ ├── landing/ # Landing page components
│ ├── theme-toggle.tsx
│ └── theme-provider.tsx
├── public/ # Static assets
├── styles/ # Global styles
└── types/ # TypeScript type definitions
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a new branch
git checkout -b feature/your-feature-name- Make your changes and commit them
git commit -m "Add your commit message"- Push to your fork
git push origin feature/your-feature-name- Create a Pull Request
- Follow the existing code style
- Write clear commit messages
- Include tests if applicable
- Update documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
- shadcn/ui for UI components
- Tailwind CSS for styling
- Next.js for the framework
For support, please open an issue in the GitHub repository or contact the maintainers.