A comprehensive full-stack web application for managing donations, subscriptions, and events with integrated Stripe payment processing.
|
|
|
|
|
|
|
|
- User registration and login with JWT-based authentication
- Role-based access control (Admin/User)
- HTTP-only cookie security for session management
- Protected routes and unauthorized access handling
- Stripe payment processing for donations and subscriptions
- Multiple donation tiers with predefined amounts
- Subscription management with recurring payments
- Payment status tracking and history
- Failed payment handling and retry mechanisms
- User profile management
- Personal donation history
- Subscription tracking
- Event participation management
- User management and oversight
- Donation analytics and reporting
- Subscription management
- Event creation and management
- Comprehensive admin interface
- Event creation and editing
- Event listing and details
- User event participation
- Event status management
- Responsive design with Tailwind CSS
- Modern, clean interface
- Mobile-friendly navigation
- Framework: Spring Boot 3.x
- Language: Java 17
- Database: H2 (file-based for persistence)
- Security: Spring Security with JWT
- Payment: Stripe API
- Build Tool: Maven
- Architecture: RESTful API
- Framework: React 18
- Language: JavaScript (ES6+)
- Styling: Tailwind CSS
- Routing: React Router DOM
- HTTP Client: Axios
- Containerization: Docker & Docker Compose
- Web Server: Nginx (for serving React app)
- Reverse Proxy: Nginx (for API routing)
- Orchestration: Docker Compose with custom networks
- Docker Desktop installed and running
- Git for cloning the repository
-
Clone the repository:
git clone https://github.com/Yae-sine/JourneeMondiale.git cd JourneeMondiale -
Set up environment variables:
Create a
.envfile in the project root: Edit the.envfile and add your Stripe secret key:STRIPE_SECRET_KEY=sk_test_your_stripe_secret_key_here
-
Configure backend properties:
cp Backend/src/main/resources/application-docker.properties.example Backend/src/main/resources/application-docker.properties
Edit the
application-docker.propertiesfile and update the Stripe secret key reference. -
Configure frontend environment:
Create a
.env.productionfile in thefrontenddirectory:REACT_APP_API_BASE_URL= REACT_APP_STRIPE_PUBLISHABLE_KEY=pk_test_your_stripe_publishable_key_here REACT_APP_PRODUCT_ID_1=price_your_product_id_1 REACT_APP_PRODUCT_ID_2=price_your_product_id_2 REACT_APP_PRODUCT_ID_3=price_your_product_id_3
-
Build and run the application:
docker-compose up --build
-
Access the application:
- Frontend: http://localhost
- Backend API: http://localhost:8080
- H2 Database Console: http://localhost:8080/h2-console
JourneeMondiale/
βββ Backend/ # Spring Boot backend
β βββ src/main/java/ # Java source code
β βββ src/main/resources/ # Configuration files
β βββ Dockerfile # Backend Docker configuration
β βββ pom.xml # Maven dependencies
βββ frontend/ # React frontend
β βββ src/ # React source code
β βββ public/ # Static assets
β βββ Dockerfile # Frontend Docker configuration
β βββ nginx.conf # Nginx configuration
β βββ package.json # NPM dependencies
βββ docker-compose.yml # Docker orchestration
βββ .env.example # Environment variables template
βββ README.md # This file
- Database: H2 file-based database with persistence
- CORS: Configured for localhost origins
- Security: JWT-based authentication with HTTP-only cookies
- Stripe: Secret key configuration for payment processing
- API Base URL: Configured to use Nginx proxy (
/api) - Stripe: Publishable key for client-side payment processing
- Product IDs: Stripe price IDs for different subscription tiers
- Networks: Custom bridge network for container communication
- Volumes: Persistent storage for H2 database
- Ports: 80 (frontend), 8080 (backend)
-
Backend Service:
- Built from
./Backend/Dockerfile - Runs Spring Boot application on port 8080
- Connects to H2 database with persistent volume
- Uses custom network for inter-service communication
- Built from
-
Frontend Service:
- Multi-stage build: Node.js build + Nginx serving
- Serves React app on port 80
- Proxies API requests to backend service
- Handles React Router with fallback to index.html
- Custom Bridge Network: Enables service-to-service communication
- DNS Resolution: Services can reference each other by name
- Port Mapping: Exposes services to host machine
- Backend: Run Spring Boot application with H2 database
- Frontend: Run React development server
- Configuration: Use local environment variables
- Build:
docker-compose build - Run:
docker-compose up - Logs:
docker-compose logs -f - Shell Access:
docker exec -it container_name bash
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues:
- Check that Docker Desktop is running
- Ensure all environment variables are set correctly
- Verify port 80 and 8080 are not in use by other applications
- Check container logs:
docker-compose logs
For additional support, please open an issue on GitHub.







