A comprehensive sports social media platform for athletes, coaches, and sports enthusiasts to share achievements, connect with others, and track their progress.
- User Profiles: Athlete and Coach profiles with detailed information
- Achievement Posts: Share sports achievements with the community
- Points System: 13-category achievement levels (from Training to Olympic Gold)
- Rankings: Leaderboard system across 28 supported sports
- AI-Powered Insights: Ask AI for profile summaries and athlete information using Gemini AI
- Real-time Chat: Connect with other athletes and coaches
- Coaches Directory: Find and connect with sports coaches
- Community Feed: View and interact with achievements from the community
- Image Uploads: Powered by Cloudinary for efficient media management
- Framework: Spring Boot 3.1.5
- Language: Java 17
- Database: PostgreSQL (Supabase)
- Authentication: JWT with Spring Security
- AI Integration: Google Gemini API (gemini-3.6-flash)
- Image Storage: Cloudinary
- Build Tool: Maven
- Framework: React 18.2.0
- Routing: React Router v6
- HTTP Client: Axios
- Build Tool: Create React App
- Deployment: Firebase Hosting
Athvexa/
├── Backend/
│ ├── src/main/java/com/athvexa/
│ │ ├── config/ # Security, Cloudinary, App configuration
│ │ ├── controller/ # REST API endpoints
│ │ ├── dto/ # Data Transfer Objects
│ │ ├── model/ # JPA entities
│ │ ├── repository/ # Database repositories
│ │ ├── service/ # Business logic
│ │ └── AthvexaApplication.java
│ ├── src/main/resources/
│ │ └── application.properties
│ └── pom.xml
├── Frontend/
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── App.js # Main app component
│ │ └── index.js # Entry point
│ ├── public/
│ ├── .env.development
│ ├── .env.production
│ └── package.json
└── README.md
Create these environment variables for your deployment platform (Render, Railway, etc.):
# Database (Supabase PostgreSQL)
SPRING_DATASOURCE_URL=jdbc:postgresql://your-supabase-host:6543/postgres?prepareThreshold=0
SPRING_DATASOURCE_USERNAME=your-username
SPRING_DATASOURCE_PASSWORD=your-password
# Security
JWT_SECRET=your-secure-jwt-secret-key-minimum-32-characters
# Cloudinary (Image uploads)
CLOUDINARY_CLOUD_NAME=your-cloud-name
CLOUDINARY_API_KEY=your-api-key
CLOUDINARY_API_SECRET=your-api-secret
# Gemini AI
GEMINI_API_KEY=your-gemini-api-key
# Server Port (automatically set by deployment platform)
PORT=10000REACT_APP_API_URL=http://localhost:10000
REACT_APP_API_URL=https://your-backend-domain.com
- Java 17 or higher
- Node.js 16 or higher
- Maven 3.6 or higher
- PostgreSQL database (or Supabase account)
-
Navigate to backend directory:
cd Backend -
Set environment variables (Windows PowerShell):
$env:SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/athvexa" $env:SPRING_DATASOURCE_USERNAME="postgres" $env:SPRING_DATASOURCE_PASSWORD="your-password" $env:JWT_SECRET="your-jwt-secret-minimum-32-characters" $env:CLOUDINARY_CLOUD_NAME="your-cloud-name" $env:CLOUDINARY_API_KEY="your-api-key" $env:CLOUDINARY_API_SECRET="your-api-secret" $env:GEMINI_API_KEY="your-gemini-api-key"
-
Build and run:
mvn clean install mvn spring-boot:run
Backend will start on
http://localhost:10000
-
Navigate to frontend directory:
cd Frontend -
Install dependencies:
npm install
-
Create
.env.development(if not exists):REACT_APP_API_URL=http://localhost:10000 -
Start development server:
npm start
Frontend will start on
http://localhost:3000
-
Connect your GitHub repository to Render/Railway
-
Configure build settings:
- Build Command:
mvn clean install - Start Command:
java -jar target/athvexa-backend-1.0.0.jar - Root Directory:
Backend
- Build Command:
-
Set environment variables (in Render/Railway dashboard):
SPRING_DATASOURCE_URLSPRING_DATASOURCE_USERNAMESPRING_DATASOURCE_PASSWORDJWT_SECRETCLOUDINARY_CLOUD_NAMECLOUDINARY_API_KEYCLOUDINARY_API_SECRETGEMINI_API_KEY
-
Deploy: Platform will automatically build and deploy
-
Update
.env.productionwith your backend URL:REACT_APP_API_URL=https://your-backend.onrender.com -
Build production bundle:
cd Frontend npm run build -
Deploy to Firebase:
firebase deploy
Or use Firebase console to upload the
buildfolder.
POST /api/auth/register- Register new userPOST /api/auth/login- User login
GET /api/users/profile/{userId}- Get user profilePUT /api/users/profile- Update profileGET /api/users/search?query={username}- Search usersGET /api/users/coaches?sport={sport}- Get coaches by sport
POST /api/posts/create- Create achievement postGET /api/posts/all- Get all postsGET /api/posts/user/{userId}- Get user's postsDELETE /api/posts/{postId}- Delete post
POST /api/likes/like?userId={id}&postId={id}- Toggle like
GET /api/rankings/top?sport={sport}&limit={n}- Get top athletes
POST /api/ai/profile-summary- Get AI-powered profile summary{ "username": "vijul_vijul", "question": "what sport does he play?" // optional }
GET /api/chat/users- Get chat usersGET /api/chat/messages?user1={id}&user2={id}- Get messagesPOST /api/chat/send- Send message
Archery, Athletics, Badminton, Baseball, Basketball, Boxing, Carrom, Chess, Cricket, Cycling, Fencing, Football, Golf, Gymnastics, Handball, Hockey, Ice Hockey, Judo, Kabaddi, Karate, Rugby, Skating, Snooker, Surfing, Swimming, Table Tennis, Tennis, Volleyball, Weightlifting, Wrestling, Horse Riding
| Level | Points | Description |
|---|---|---|
| Training | 1 | Training/Practice |
| School | 5 | School competition |
| College | 10 | College competition |
| District | 50 | District level |
| State | 100 | State level |
| National | 500 | National level |
| International | 1000 | International level |
| World Championship Bronze | 2000 | World Championship 3rd |
| World Championship Silver | 3000 | World Championship 2nd |
| World Championship Gold | 4000 | World Championship 1st |
| Olympic Bronze | 3000 | Olympic 3rd place |
| Olympic Silver | 4000 | Olympic 2nd place |
| Olympic Gold | 5000 | Olympic 1st place |
- JWT-based authentication
- BCrypt password hashing (strength 8 for performance)
- CORS configuration for cross-origin requests
- Environment variable-based secrets management
- No hardcoded credentials in source code
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Commit changes:
git commit -m 'Add your feature' - Push to branch:
git push origin feature/your-feature - Create a Pull Request
This project is proprietary software. All rights reserved.
For issues, questions, or feature requests, please create an issue in the GitHub repository.
Built with ❤️ for the sports community