A modern, full-stack application to help users track and predict their menstrual cycles, built with React, Spring Boot, and Clerk for authentication.
This application provides a user-friendly interface for logging period dates, symptoms, and moods. It offers predictions for future cycles and fertility windows. The frontend is built as a responsive single-page application, communicating with a robust Spring Boot backend via a REST API. All user data is kept private and secure behind a robust JWT-based authentication system powered by Clerk.
Coming soon!
Secure User Authentication: Full sign-up, sign-in, and profile management handled by Clerk.Dashboard Overview: A central hub to view the current cycle status and upcoming predictions.Cycle Logging: Easily log start and end dates of periods.Personalized Settings: Users can manage their profile and application settings.API Mocking: Uses Mock Service Worker (MSW) to simulate API calls for a smooth development experience while the backend is in progress.Protected Routes: API and UI routes are protected, ensuring user data is secure.Responsive Design: Styled with Tailwind CSS for a great experience on any device.
This project is built with a modern, decoupled architecture.
| Tier | Technology | Description |
|---|---|---|
| Frontend | React (with Vite) | A fast, modern single-page application using TypeScript and React Router v6 for navigation. |
| Tailwind CSS | A utility-first CSS framework for rapid UI development. | |
| Backend | Spring Boot | A robust Java framework (version 17+) for building the REST API. |
| Database | PostgreSQL | A powerful, open-source object-relational database system. |
| API & Auth | REST API (JSON) | The communication protocol between the frontend and backend. |
| JWT via Clerk | Handles all user authentication, authorization, and management. | |
| DevOps | Docker For containerizing both the frontend and backend applications. | |
| GitHub Actions | For continuous integration and continuous deployment (CI/CD). | |
| Deployment | Planned for Render or AWS EC2. |
These instructions will get the frontend development server running on your local machine. It currently uses a mock API server (MSW) for data.
- Node.js (v18 or newer recommended)
- npm (or yarn/pnpm)
- A Clerk.dev account to get your API keys.
git clone https://github.com/bcdipesh/period-cycle-tracker.git
cd period-cycle-tracker/clientnpm installCreate a .env file in the root of your project by copying the example file:
cp .env.example .envOpen the .env file and add your Vite Clerk Publishable Key and Clerk Secret Key. You can find this on the API Keys page of your Clerk Dashboard.
# Clerk Secret Keys
VITE_CLERK_PUBLISHABLE_KEY=pk_test\***\*\*\*\*\*\***\*\*\*\*\***\*\*\*\*\***
CLERK_SECRET_KEY=sk_test\***\*\*\*\*\*\***\*\*\*\*\***\*\*\*\*\***
npm run devThe application should now be running on http://localhost:5173.
In the project directory, you can run:
npm run dev: Runs the app in development mode with MSW enabled.npm run build: Builds the app for production to the dist folder.npm run lint: Lints the code using ESLint to find and fix problems.npm run preview: Serves the production build locally to preview it.
This project is distributed under the MIT License. See the LICENSE file for more information.
Creating with ❤️ for my wife by Dipesh B C @bcdipesh