The Monthly Challenges App is a full-stack web application that allows users to add, view, update, and delete monthly challenges. Built using React for the frontend and Spring Boot for the backend, the project follows a modern microservices approach with RESTful APIs and database integration.
This project is designed to enhance CRUD (Create, Read, Update, Delete) operations while demonstrating a clean and scalable architecture.
Built using React (frontend) and Spring Boot (backend), with a PostgreSQL database. The project follows a RESTful API architecture and has been tested on AWS using S3 (frontend hosting), Elastic Beanstalk (backend), and RDS (PostgreSQL database). π
- Spring Boot 3.4.3 - For building the RESTful API.
- Spring Data JPA - For database interactions.
- H2 Database - Used for local development (can be switched to PostgreSQL).
- Maven - For dependency management and build automation.
- Lombok - Reduces boilerplate code.
- Tested on AWS Elastic Beanstalk
- React 18 - For building the interactive UI.
- Axios - For making API requests.
- Bootstrap 5 - For styling and responsiveness.
β
Users can add new challenges with a month and description.
β
Fetch and display challenges in a clean UI.
β
Edit and update existing challenges and Delete challenges if no longer needed.
β
RESTful APIs for communication between frontend and backend.
β
Database Management with PostgreSQL and State management with React hooks (useState
, useEffect
).
MonthlyChallenges/
|
βββ backend/ (Spring Boot App)
β βββ src/main/java/com/cw/ChallengeApplication/
β β βββ controllers/ # API Controllers
β β βββ services/ # Business Logic
β β βββ models/ # Entity Models
β β βββ repositories/ # Database Interactions
β β βββ ChallengeApplication.java # Main Application
β βββ src/main/resources/application.properties
β βββ pom.xml
|
βββ frontend/ (React App)
β βββ src/
β β βββ components/
β β β βββ AddChallenges.js
β β β βββ ChallengeList.js
β β β βββ Challenge.js
β β βββ App.js
β β βββ index.js
β βββ package.json
|
βββ README.md
|
βββ .gitignore
1οΈβ£ Clone the repository:
git clone https://github.com/chinmaywali/MonthlyChallenges_App-FullStack.git
2οΈβ£ Navigate to the backend folder:
cd backend
3οΈβ£ Build and run the Spring Boot app:
mvn spring-boot:run
4οΈβ£ The backend will be available at:
http://localhost:8080
1οΈβ£ Open another terminal and navigate to the frontend folder:
cd frontend
2οΈβ£ Install dependencies:
npm install
3οΈβ£ Start the React app:
npm start
4οΈβ£ The frontend will be available at:
http://localhost:3000
Method | Endpoint | Description | Request Body |
---|---|---|---|
GET | /challenges |
Fetch all challenges | N/A |
POST | /challenges |
Add a new challenge | { "month": "January", "description": "Read books" } |
PUT | /challenges/{id} |
Update a challenge | { "month": "February", "description": "Workout daily" } |
DELETE | /challenges/{id} |
Delete a challenge by ID | N/A |
Example JSON Request for POST & PUT:
{
"month": "March",
"description": "Learn a new programming language"
}
Contributions are welcome! Feel free to fork this repo and submit a pull request.