Thank you for your interest in contributing to DevUnity. This guide outlines the process for setting up the project and submitting contributions. DevUnity is primarily written in TypeScript. The backend is built using Node.js and MongoDB. Prettier is used for code formatting.
To contribute, ensure you have the following installed:
- A stable internet connection
- A text editor (such as VS Code or Neovim)
- Git
- Node.js (version 22.5.1 LTS)
- MongoDB (or MongoDB Atlas)
- Docker (if applicable)
- Firebase (if working on authentication-related features)
If using nvm
(or nvm-windows
on Windows), run:
nvm install 22.5.1
nvm use 22.5.1
Alternatively, download and install Node.js from the official website.
- Duplicate
/frontend/.env.example
and rename it to.env
.
-
Navigate to the
/frontend
directory and install dependencies:npm install
-
Start the frontend locally:
npm run dev
-
Create a TinyMCE account and obtain an API key.
-
Approve the domains
http://localhost:5173
andhttps://devunity.netlify.app
. -
Add the key to
/frontend/.env
:VITE_TINYMCE_API_SECRET=your-api-key
-
Create a RapidAPI account.
-
Subscribe to Judge0.ce.
-
Obtain the required API keys and add them to
/frontend/.env
:VITE_JUDGE_CE_API_KEY=your-api-key VITE_JUDGE_CE_HOST=judge0-ce.p.rapidapi.com VITE_JUDGE_CE_BASE_URL=https://judge0-ce.p.rapidapi.com
-
Duplicate
/backend/.env.example
and rename it to.env
. -
Ensure MongoDB is running locally or update
MONGO_URI
if using MongoDB Atlas. -
Generate a
JWT_SECRET
using:openssl rand -base64 32
-
(Optional) Configure email service in
.env
:[email protected] SMTP_PASS=your-app-password SMTP_HOST=smtp.example.com
-
(Optional) Configure Cloudinary for file uploads:
CLOUDINARY_NAME=your-cloud-name CLOUDINARY_API_KEY=your-api-key CLOUDINARY_API_SECRET=your-api-secret
-
Navigate to
/backend
and install dependencies:npm install
-
Start the backend locally:
npm run dev
DevUnity follows Conventional Commits for pull request titles and commit messages. Use the following prefixes:
feat
: A new featureimpr
: Improvement to an existing featurefix
: A bug fixstyle
: Code formatting changes (e.g., white space, semi-colons)refactor
: Code changes that improve readability or structure without changing behaviorchore
: Other changes that do not fit the above categories
For any questions, you can:
- Open an issue on GitHub
- Start a discussion on GitHub Discussions
Thank you for contributing!