First off, thank you for considering contributing to UniDash! It's people like you that make UniDash such a great tool for BITS Pilani Dubai Campus students.
- Code of Conduct
- Getting Started
- Development Workflow
- Pull Request Process
- Style Guidelines
- Community
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code.
flowchart LR
A[Fork Repository] --> B[Clone Locally]
B --> C[Install Dependencies]
C --> D[Setup Environment]
D --> E[Start Development]
-
Fork the Repository
# Click the 'Fork' button on GitHub
-
Clone Your Fork
git clone [https://github.com/your-username/AccessX.git](https://github.com/HUSAM-07/AccessX.git) cd unidash
-
Install Dependencies
npm install
-
Set Up Environment Variables
cp .env.example .env.local # Edit .env.local with your configuration
-
Start Development Server
npm run dev
flowchart TD
A[Branch Types] --> B[feature/]
A --> C[bugfix/]
A --> D[hotfix/]
A --> E[docs/]
B --> F[feature/add-attendance-tracker]
C --> G[bugfix/fix-login-error]
D --> H[hotfix/security-patch]
E --> I[docs/update-readme]
feature/*
: New featuresbugfix/*
: Bug fixeshotfix/*
: Critical fixesdocs/*
: Documentation changes
<type>: <subject>
- Types: feat, fix, docs, style, refactor, test, chore
- Scope: component name, page name, or general area
- Subject: short description in present tense
- Body: detailed description (optional)
- Footer: breaking changes, issue references (optional)
flowchart LR
A[Create Branch] --> B[Make Changes]
B --> C[Test Changes]
C --> D[Create PR]
D --> E[Code Review]
E --> F{Approved?}
F -->|Yes| G[Merge]
F -->|No| B
-
Before Creating a PR
- Update documentation
- Add/update tests
- Run linting:
npm run lint
- Run tests:
npm run test
-
PR Requirements
- Clear title and description
- Reference related issues
- Screenshots for UI changes
- Updated documentation
- Passing CI checks
-
Review Process
- Two approvals required
- All comments addressed
- CI checks passing
- No merge conflicts
- Follow TypeScript best practices
- Use ESLint and Prettier configurations
- Follow component structure:
// Component structure import statements interface definitions component definition styles (if any) exports
flowchart TD
A[Component Creation] --> B[Props Interface]
B --> C[Component Logic]
C --> D[JSX Structure]
D --> E[Styling]
E --> F[Testing]
- Use functional components with hooks
- Props interface definitions
- Meaningful component names
- Proper component organization
- Consistent styling approach
- Unit tests for utilities
- Component tests for UI
- Integration tests for flows
- E2E tests for critical paths
- Create an issue for bugs
- Discussions for questions
- Pull requests for contributions
- Email for private inquiries: [email protected]
- GitHub Issues
- GitHub Discussions
- Project Discord (coming soon)
- Update README.md for major changes
- Document new features
- Update API documentation
- Add JSDoc comments
flowchart LR
A[main] --> B[development]
B --> C[feature branches]
C --> B
B --> A
main
: Production-ready codedevelopment
: Integration branch- Feature branches: Individual features
- Version bump
- Changelog update
- Documentation review
- Release notes
- Tag creation
- Deployment
Thank you for contributing to UniDash! 🎉