Syncrift is a dynamic online platform for real-time 1v1 battles in coding, typing, and creative design. Whether you’re a developer, speed typist, or pixel-perfectionist, Syncrift turns your skills into intense matchups against friends and rivals.
- Real-Time Battles: Engage in head-to-head matches in coding, typing, and design.
- Friend-Based Matchmaking: Challenge friends directly for bragging rights.
- Synchronization: Enjoy seamless real-time interactions and score updates.
- Skill-Based Matchmaking (Under Development): Compete with rivals of similar skill levels.
- Gamified Competition (Under Development): Earn ranks, badges, and rewards as you climb the leaderboards.
You can explore the live platform here:
👉 https://syncrift.me
Or set it up locally by following the instructions below.
git clone https://github.com/Synthasix/syncrift.git
cd syncriftFolder: syncrift-frontend/
-
Navigate to frontend:
cd syncrift-frontend -
Install dependencies:
npm install
-
Change the backend address:
In the
.envfile change the VITE_SERVER to your backend address. If using default then change it tohttp://localhost:8080 -
Run the development server:
npm run dev
Folder: syncrift-backend/
-
Navigate to backend:
cd syncrift-backend -
Initialize Maven dependencies:
mvn clean install
-
Configure Environment Variables:
Inside the
src/main/resources/folder, you will find a file named:.env.properties.exampleRename it to:
.env.propertiesThen, fill all the given fields.
- jwt.secret → Generate a random string (e.g., using RandomKeygen or
openssl rand -hex 32). - cors.allowed → Comma-separated list of frontend origins (e.g.,
http://localhost:3000,https://syncrift.me). - admin.username & admin.password → Choose your own credentials for the backend admin panel.
- db.url, db.username, db.password → Database connection details. For local PostgreSQL:
db.url=jdbc:postgresql://localhost:5432/syncrift db.username=your_db_user db.password=your_db_password
- server.address & server.port → The host/IP and port for the backend. Commonly:
server.address=localhost server.port=8080
- Cloudinary (for media storage):
- Sign up at Cloudinary.
- From the Dashboard, copy your:
cloud_nameapi_keyapi_secret
- image.upload.temp-dir → Local temp folder for storing uploads before sending to Cloudinary.
- jwt.secret → Generate a random string (e.g., using RandomKeygen or
-
Run the backend server:
mvn spring-boot:run
-
Access API locally:
Default URL → http://localhost:8080
- Frontend: React, WebSockets
- Backend: Spring Boot, Maven, JWT Auth
- Database: PostgreSQL
- Cloud Storage: Cloudinary
This project is licensed under the MIT License.