A full-stack web application for managing children's sports programs, events, and volunteer coordination.
KidsInMotion/
├── backend/complete/ # Spring Boot backend
│ ├── src/main/java/
│ │ └── com/example/restservice/
│ │ ├── model/ # JPA entities
│ │ ├── repository/ # Data repositories
│ │ ├── security/ # Firebase authentication
│ │ ├── config/ # Configuration classes
│ │ └── *.java # REST controllers
│ └── build.gradle # Backend dependencies
├── frontend/ # React frontend
│ ├── src/
│ │ ├── components/ # Reusable components
│ │ ├── pages/ # Page components
│ │ ├── context/ # React context (auth)
│ │ └── firebaseConfig.js # Firebase client config
│ └── package.json # Frontend dependencies
└── plan.md # Development roadmap
✅ Authentication System
- Firebase Admin SDK integration
- JWT token validation
- User profile management
- Role-based access control (USER, ADMIN)
✅ Event Management
- CRUD operations for events
- Public event viewing
- Event capacity management
- Admin-only event creation/editing
✅ Participant Registration
- Child registration for events
- Registration cancellation
- Capacity checking
- Parent-child relationship management
✅ Volunteer Management
- Volunteer signup for events
- Role assignment and skills tracking
- Volunteer status management
- Admin oversight of volunteer activities
✅ Authentication
- Email/password and Google OAuth
- Protected routes
- User profile management
✅ Event Features
- Browse events
- View event details
- Registration and volunteer flows
✅ Dashboard
- User profile overview
- Registration management
- Volunteer activity tracking
- Framework: Spring Boot 3.3.0
- Database: H2 (development) / PostgreSQL (production)
- Authentication: Firebase Admin SDK
- Build Tool: Gradle
- Java Version: 17
- Framework: React 18
- Auth: Firebase Auth
- Styling: Tailwind CSS + Bootstrap
- Build Tool: Webpack
- Routing: React Router
- Java 17+
- Node.js 16+
- Firebase project with Authentication enabled
-
Clone and navigate to backend:
cd backend/complete -
Configure Firebase:
- Create a Firebase project at https://console.firebase.google.com
- Generate a service account key
- Save as
src/main/resources/firebase-service-account.json - Or set
GOOGLE_APPLICATION_CREDENTIALSenvironment variable
-
Update application.properties:
# Update CORS origin for your frontend URL cors.allowed.origins=http://localhost:3000
-
Run the backend:
./gradlew bootRun
Backend will start on http://localhost:8080
-
Navigate to frontend:
cd frontend -
Install dependencies:
npm install
-
Configure Firebase:
- Update
src/firebaseConfig.jswith your Firebase project config:
const firebaseConfig = { apiKey: "your-api-key", authDomain: "your-project.firebaseapp.com", projectId: "your-project-id", // ... other config };
- Update
-
Start the development server:
npm start
Frontend will start on http://localhost:3000
POST /api/auth/sync-user- Sync Firebase user with backendGET /api/auth/profile- Get user profilePUT /api/auth/profile- Update user profile
GET /api/events- List all eventsGET /api/events/upcoming- List upcoming eventsGET /api/events/{id}- Get event detailsPOST /api/events- Create event (Admin)PUT /api/events/{id}- Update event (Admin)DELETE /api/events/{id}- Delete event (Admin)
GET /api/participants/me- Get user's registrationsPOST /api/participants- Register for eventDELETE /api/participants/{id}- Cancel registrationGET /api/participants/event/{eventId}- Get event participants (Admin)
GET /api/volunteers/me- Get user's volunteer signupsPOST /api/volunteers- Sign up as volunteerDELETE /api/volunteers/{id}- Cancel volunteer signupGET /api/volunteers/event/{eventId}- Get event volunteers (Admin)PUT /api/volunteers/{id}/status- Update volunteer status (Admin)
- Browse events
- View event details
- Access registration/login pages
- All guest permissions
- Register children for events
- Sign up as volunteers
- Manage their registrations and volunteer commitments
- Update profile information
- All user permissions
- Create/edit/delete events
- View all registrations and volunteers
- Manage volunteer statuses
- Access administrative features
- Firebase authentication integration
- Complete CRUD operations for all entities
- Role-based access control
- Basic frontend-backend integration
- Database migration to PostgreSQL
- Admin interface development
- Frontend API integration updates
- Complete PostgreSQL setup
- Build admin dashboard
- Add email notifications
- Implement testing
- Production deployment
- Follow the development plan in
plan.md - Run tests before submitting changes
- Update documentation for new features
- Use meaningful commit messages
MIT License - see LICENSE file for details