Every line of code you write helps a woman understand her body a little better. We're so glad you're here. 💜
- 🙋 How to Get Assigned to an Issue
- 🏅 Difficulty Labels & XP Points
- 🌿 Branch Naming Convention
- ⚙️ Local Setup
- 📝 PR Title Format
- 📋 PR Description Requirements
- ✅ PR Checklist
- 🚫 What Not to Do
- 💜 Code of Conduct
We use GitHub Issues to manage all tasks. Please do not start work without being assigned — this prevents duplicate effort and keeps things fair for everyone.
- Browse open issues at github.com/Him-an-shi/Aarini/issues
- Find an issue that matches your skills and interest
- Comment on the issue — something like:
"Hi! I'd love to work on this. I'm familiar with React Native / Flask / docs (pick yours). Can I be assigned? 😊"
- Wait for a maintainer to assign you before you start coding
- Once assigned, you own that issue — aim to submit your PR within 7 days so the issue stays active
💡 Tip: If you're new here, look for issues labeled
NEWBIE— they're designed to be welcoming first contributions!
Aarini uses the ELUSoC'26 contribution program. Each issue is tagged with a difficulty label that carries XP points:
| Label | Difficulty | XP Points | What to Expect |
|---|---|---|---|
| 🟢 NEWBIE | Beginner | 10 XP | Documentation, small bug fixes, config files, minor UI tweaks |
| 🔵 ADVENTURER | Intermediate | 25 XP | New features, API routes, screen components, service integrations |
| 🔴 VETERAN | Advanced | 50 XP | Architecture changes, AI integration, performance optimizations, complex refactors |
XP points are tracked on the ELUSoC leaderboard. Every contribution counts — no matter the size! 🌟
Always create a new branch from main for your work. Use the following naming patterns:
| Type | Pattern | Example |
|---|---|---|
| ✨ New Feature | feature/your-feature-name |
feature/ovulation-prediction |
| 🐛 Bug Fix | fix/bug-name |
fix/cycle-date-validation |
| 📚 Documentation | docs/topic-name |
docs/contributing-guide |
| 💅 Styling / UI | style/component-name |
style/dashboard-dark-mode |
| ♻️ Refactor | refactor/what-changed |
refactor/firebase-queries |
| ✅ Tests | test/what-is-tested |
test/cycle-tracker-unit |
# Always branch off from main
git checkout main
git pull origin main
git checkout -b feature/your-feature-name
⚠️ Do not push directly tomain. All changes must go through a Pull Request.
For a full setup guide, refer to the README.md → Installation Guide. Here's a quick summary:
cd frontend
# Install dependencies
npm install
# Copy environment variables
cp .env.example .env
# → Set EXPO_PUBLIC_API_URL to your backend URL
# Start the Expo dev server
npx expo startScan the QR code with Expo Go on your phone, or press
afor Android /ifor iOS emulator.
cd backend
# Create and activate a virtual environment
python -m venv venv
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Copy environment variables
cp .env.example .env
# → Fill in your GEMINI_API_KEY, Firebase credentials, etc.
# Run the Flask dev server
flask runThe backend starts at
http://localhost:5000. Make sure your frontend.envpoints to this URL.
All Pull Requests must follow this title format:
[ELUSoC'26] brief description of change
Examples:
[ELUSoC'26] Add .env.example for frontend directory
[ELUSoC'26] Fix hardcoded API URL fallback in AuthContext
[ELUSoC'26] Add CONTRIBUTING.md with ELUSoC guidelines
[ELUSoC'26] Implement ovulation prediction endpoint
📌 Including
[ELUSoC'26]in your title is required for your contribution to be counted on the leaderboard.
When opening a Pull Request, please fill out the following in your description:
Closes #<issue-number>
Every PR must be linked to an issue. No issue → No PR.
A short description of what you changed and why.
Example: "Created
frontend/.env.exampleso new contributors have a clear template for the required environment variables. Updatedservices/api.jsto useprocess.env.EXPO_PUBLIC_API_URLwith alocalhost:5000fallback."
If your change affects any screen or visual component, include before/after screenshots. This helps reviewers quickly validate the change.
Describe what you tested:
- Did the app build without errors?
- Did you test on a real device or emulator?
- Which flows did you manually verify?
Example: "Tested on Android emulator (Pixel 7). App builds and runs. Login, cycle tracking, and AI chat all functional."
Before submitting your PR, make sure all of the following are true:
- I am assigned to the linked issue before opening this PR
- My branch name follows the naming convention (
feature/,fix/,docs/, etc.) - The app builds and runs without errors (
npx expo start/flask run) - I have not committed a
.envfile - I have not committed a Firebase service account JSON file
- My changes are scoped to the issue — no unrelated modifications bundled in
- My PR title starts with
[ELUSoC'26] - I have linked the issue in the PR description (
Closes #XX) - I have included screenshots if my change affects the UI
Please avoid the following — they are the most common reasons PRs get closed without merging:
| ❌ Don't | ✅ Do Instead |
|---|---|
| Open a PR without being assigned | Comment on the issue first and wait for assignment |
| Bundle multiple unrelated fixes in one PR | One issue → One PR |
Push directly to main |
Always work on a feature/fix/docs branch |
Commit .env or service account JSON files |
Keep secrets out of version control — use .env.example as a template |
| Copy-paste code from other repositories without credit | Write original code; if referencing something, attribute it |
Use a generic branch name like patch-1 or my-branch |
Follow the naming convention: feature/your-feature-name |
| Skip the PR description | Fill out all required fields — linked issue, summary, testing |
💬 If you're unsure about anything, ask in the issue comments before starting. We're always happy to help! 🌸
Aarini is built on empathy, respect, and inclusivity — the same values we embed into the product itself.
As a contributor, you agree to:
- 🤝 Be kind and respectful — to maintainers, to other contributors, and to users
- 🌸 Be empathetic — remember we're building tools for women's health; bring that sensitivity to your work
- 🔒 Respect privacy — never share or mishandle any health-related data you encounter while contributing
- 📖 Be transparent — if you're blocked, say so. If you can't finish an issue, let us know so it can be reassigned
- 🌍 Be inclusive — we welcome contributors of all backgrounds, experience levels, and identities
Harassment, discrimination, or disrespectful behavior of any kind will result in immediate removal from the project.
"When women thrive, the world thrives." — Let's build something worthy of that.
Built with 💜 by Himanshi and the Aarini Community
Questions? Open a GitHub Discussion or drop a comment on the relevant issue.
⭐ If Aarini resonates with you, please give it a star — it helps more women discover it! ⭐