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.1Alternatively, download and install Node.js from the official website.
- Duplicate
/frontend/.env.exampleand rename it to.env.
-
Navigate to the
/frontenddirectory 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:5173andhttps://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.exampleand rename it to.env. -
Ensure MongoDB is running locally or update
MONGO_URIif using MongoDB Atlas. -
Generate a
JWT_SECRETusing:openssl rand -base64 32
-
(Optional) Configure email service in
.env:SMTP_MAIL=your-email@example.com 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
/backendand 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!