PeakForm is a web-based application that helps users achieve their health goals such as weight loss, muscle gain, and fitness improvement. The app generates personalized workout plans and meal plans based on a questionnaire filled out by the user. It also allows users to track their progress and interact with other users through public posts and comments. Additionally, the app integrates with food databases to manage diets and recipes.
- Personalized workout plans: Automatically generated based on user inputs.
- Meal plans: Personalized meal plans to complement fitness goals.
- Progress tracking: Users can log workouts and meals, track their progress.
- Social interaction: Users can post updates, share experiences, and comment on others' posts.
- Food and recipe integration: Access a variety of foods and recipes to help with meal planning.
- Backend: Spring Boot
- Frontend: React
- Database: PostgreSQL
- Authentication: JWT (JSON Web Token)
- CI/CD: GitHub Actions
- Containerization: Docker
Before running the application, make sure you have the following installed:
- Java 17 or later
- Node.js (for the frontend)
- Docker (for containerization)
- PostgreSQL (or use Docker to run PostgreSQL)
- Clone the repository:
git clone https://github.com/yourusername/peakform.git cd peakform/backend
./mvnw clean install
Create a .env file in the backend directory and add your environment variables, such as the database URL.
./mvnw spring-boot:run
cd ../frontend
npm install
npm start
The app should now be running on http://localhost:3000 for the frontend and http://localhost:8080 for the backend.
If you'd like to run the application using Docker, you can do so by using Docker Compose:
- Build and run the application using Docker Compose:
docker-compose up --build
- This will start both the backend and PostgreSQL containers. The frontend will be available on port 3000.
The database schema for the application is defined in the schema.sql file. It includes tables for users, workouts, meals, posts, comments, and more.
- Fork the repository.
- Create a new branch (git checkout -b feature-name).
- Make your changes.
- Commit your changes (git commit -am 'Add new feature').
- Push to the branch (git push origin feature-name).
- Create a new Pull Request.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
- Spring Boot
- React
- PostgreSQL
- Docker