Elevate your hackathon team organization.
CuratiX Vault is a premium, lightweight project management platform designed specifically for hackathon teams to consolidate member profiles, track project assets, and maintain a historical record of their innovation journey.
- Live Platform: curatix.co.in
- Mirror Link: curati-x-vault.vercel.app
- Interactive API Docs: Swagger UI
- Backend API: curatix-vault.onrender.com
- Dynamic Project Boards: Create dedicated spaces for each hackathon with custom colors, emojis, and metadata.
- Role-Based Collaboration: Multi-tier permission system (OWNER, EDITOR, VIEWER) for secure team management.
- Smart Member Cards: Automatically syncs user professional data across all boards while allowing board-specific bios and skills.
- The Vault (Asset Manager): Centralized storage for Pitch Decks, PRDs, and Codebase links with direct Cloudinary integration.
- Insightful Exports: One-click CSV exports for member data (Admission/Enrollment numbers) for quick form filling.
- Invitation System: Secure, shareable UUID tokens for quick team onboarding.
CuratiX Vault uses a modern, stateless architecture to ensure scalability and ease of deployment.
| Layer | Technology |
|---|---|
| Frontend | React 18, Vite, Tailwind CSS, Zustand, Lucide Icons |
| Backend | Java 17, Spring Boot 3.2, Spring Security, Hibernate/JPA |
| Database | MySQL 8.0 with Flyway migrations |
| Auth | Firebase (OIDC / ID token verification) |
| Storage | Cloudinary (file uploads and asset hosting) |
- Java 17+
- Node.js 18+
- MySQL 8.0
- Firebase Project (for Auth)
- Cloudinary Account (for File Uploads)
All required configuration in one place:
Backend — backend/src/main/resources/application.properties
| Variable | Description |
|---|---|
spring.datasource.url |
MySQL JDBC connection string |
spring.datasource.username |
MySQL username |
spring.datasource.password |
MySQL password |
CLOUDINARY_URL |
Full Cloudinary URL (cloudinary://key:secret@cloud) |
firebase-service-account.json |
Place in src/main/resources/ (not a property — a file) |
Frontend — frontend/.env
| Variable | Description |
|---|---|
VITE_FIREBASE_CONFIG |
Firebase project config object (JSON stringified) |
VITE_API_BASE_URL |
Backend base URL (e.g. http://localhost:8080) |
- Configure
backend/src/main/resources/application.properties:spring.datasource.url=jdbc:mysql://localhost:3306/curatix spring.datasource.username=YOUR_USER spring.datasource.password=YOUR_PASS CLOUDINARY_URL=cloudinary://API_KEY:API_SECRET@CLOUD_NAME
- Place your
firebase-service-account.jsoninbackend/src/main/resources/. - Run with Maven:
cd backend mvn spring-boot:run
- Install dependencies:
cd frontend npm install - Configure
.env:VITE_FIREBASE_CONFIG=... VITE_API_BASE_URL=http://localhost:8080
- Launch:
npm run dev
All protected endpoints require a Firebase ID token as a Bearer token in the Authorization header.
If you are logged into the web app, run this in the browser console:
await (await import('firebase/auth')).getAuth().currentUser.getIdToken();curl -X GET "http://localhost:8080/api/boards" \
-H "Authorization: Bearer <YOUR_ID_TOKEN>"Tip
The full interactive API reference is available at /swagger-ui/index.html — every endpoint can be tested directly from the browser.
| Service | Platform | Notes |
|---|---|---|
| Frontend | Vercel | Auto-deploys on push to main. Set VITE_* env vars in project settings. |
| Backend | Render | Deployed as a Web Service. Set all backend env vars in the Render dashboard. Cold starts may cause a ~30s delay on the free tier. |
| Database | PlanetScale / Railway / any MySQL host | Update spring.datasource.url to point to your hosted instance. |
Note
The Render free tier spins down after inactivity. The first request after idle may be slow — this is expected and not a bug.
We welcome professional contributions. Please see CONTRIBUTING.md for architectural guidelines and code standards.
This project is licensed under the MIT License.