Progress Tracker is a web application designed to help users set, track, and achieve their personal and professional goals. Built with modern technologies like Next.js, TypeScript, and Tailwind CSS, it offers a seamless and responsive user experience.
- User Authentication: Secure login and registration using NextAuth.js.
- Project Management: Create, edit, and delete projects with customizable categories.
- Progress Tracking: Add tracks to projects to monitor specific aspects of your progress.
- Metadata Integration: Enhance tracks with customizable metadata entries.
- Responsive Design: Optimized for both desktop and mobile devices using Tailwind CSS.
- Docker Support: Easy deployment with Docker for both development and production environments.
- Error Handling: Robust error handling and validation using Zod and React Hook Form.
- Accessibility: Compliant with WCAG 2.1 AA standards to ensure accessibility for all users.
- Performance Optimization: Implements best practices for fast load times and efficient rendering.
-
Clone the Repository
git clone https://github.com/resulgg/progress-tracker.git cd progress-tracker -
Install Dependencies
Using pnpm:
pnpm install
-
Set Up Environment Variables
Create a
.envfile in the root directory and add the following variables:DATABASE_URL=postgresql://postgres:postgres@localhost:5432/postgres NEXTAUTH_URL=http://localhost:3000 AUTH_SECRET=your_auth_secret AUTH_GOOGLE_ID=your_google_id AUTH_GOOGLE_SECRET=your_google_secret R2_ACCESS_KEY_ID=your_r2_access_key_id R2_SECRET_ACCESS_KEY=your_r2_secret_access_key R2_BUCKET_NAME=your_r2_bucket_name R2_REGION=your_r2_region R2_ENDPOINT=your_r2_endpoint NEXT_PUBLIC_R2_PUBLIC_URL=your_r2_public_url LEMON_SQUEEZY_API_KEY=your_lemon_squeezy_api_key LEMONSQUEEZY_STORE_ID=your_lemon_squeezy_store_id NEXT_PUBLIC_LEMON_SQUEEZY_VARIANT_ID=your_lemon_squeezy_variant_id LEMONSQUEEZY_WEBHOOK_SECRET=your_lemon_squeezy_webhook_secret
-
Database Setup
Ensure you have PostgreSQL running and accessible via the
DATABASE_URL.Apply database migrations and seed data:
pnpm db:push pnpm db:seed
-
Run the Development Server
pnpm dev Open [http://localhost:3000](http://localhost:3000) in your browser to see the application.
- Sign Up: Create a new account or log in using existing credentials.
- Create Project: Add new projects under different categories.
- Add Tracks: Within each project, add tracks to monitor specific aspects.
- Track Progress: View and compare your progress across different tracks.
- Next.js: React framework for server-side rendering and static site generation.
- TypeScript: Typed superset of JavaScript for better code quality and developer experience.
- Tailwind CSS: Utility-first CSS framework for rapid UI development.
- Drizzle ORM: TypeScript ORM for database interactions.
- NextAuth.js: Authentication library for Next.js applications.
- Zod: Schema validation library for TypeScript.
- React Hook Form: Form management library for React.
- Shadcn UI: Accessible and customizable UI components.
- Lucide React: Icon library for React applications.
- Docker: Containerization platform for easy deployment.
- PostgreSQL: Robust relational database system.
Contributions are welcome! Please follow these steps:
-
Fork the Repository
-
Create a New Branch
git checkout -b feature/YourFeature
-
Make Your Changes and Commit
git commit -m "Add your feature" -
Push to the Branch
git push origin feature/YourFeature
-
Open a Pull Request
Please ensure your code adheres to the project's coding standards and passes all tests. Feel free to reach out if you need assistance.
This project is licensed under the MIT License.