Thank you for your interest in contributing to HackFlow Lite! This document provides guidelines and information for contributors.
- Node.js 18+ and npm
- Git
- Supabase account for testing
- Basic knowledge of React, Next.js, and TypeScript
-
Fork and Clone
git clone https://github.com/your-username/hackflow-lite.git cd hackflow-lite -
Install Dependencies
npm install
-
Environment Setup
cp .env.local.example .env.local # Update with your Supabase credentials -
Database Setup
- Run the migration files in your Supabase project
- See README.md for detailed instructions
-
Start Development Server
npm run dev
- TypeScript: Use strict TypeScript with proper type definitions
- ESLint: Follow the configured ESLint rules
- Prettier: Code formatting is handled automatically
- Components: Use functional components with hooks
- Styling: Use Tailwind CSS classes, avoid custom CSS when possible
- File Naming: Use kebab-case for files (
registration-form.tsx) - Component Naming: Use PascalCase for components (
RegistrationForm) - Props: Define proper TypeScript interfaces for all props
- Exports: Use default exports for components
- Migrations: Create new migration files for schema changes
- RLS Policies: Always include appropriate Row Level Security policies
- Testing: Test database changes thoroughly with different user roles
- Manual Testing: Test all user workflows thoroughly
- Role Testing: Test with both organizer and applicant roles
- Edge Cases: Test form validation, error states, and edge cases
- Responsive: Test on different screen sizes
- Check existing issues before creating new ones
- For new features, create an issue to discuss the approach
- For bugs, provide detailed reproduction steps
Use descriptive branch names:
feature/registration-form-validationfix/dashboard-loading-statedocs/setup-instructions
Follow conventional commit format:
type(scope): description
feat(auth): add password reset functionality
fix(forms): resolve validation error display
docs(readme): update setup instructions
- Create PR: Use the provided PR template
- Description: Clearly describe changes and motivation
- Testing: Include testing steps and screenshots
- Review: Address all review feedback
- Merge: Squash and merge when approved
- Self Review: Review your own code before submitting
- Documentation: Update documentation for new features
- Tests: Include manual testing steps in PR description
- Screenshots: Include UI changes screenshots
- Functionality: Verify the feature works as intended
- Code Quality: Check for maintainability and best practices
- Security: Review for potential security issues
- Performance: Consider performance implications
- Type Definition: Update
RegistrationQuestiontype - Builder Component: Add to
RegistrationQuestionBuilder - Renderer: Update
DynamicFormFieldscomponent - Validation: Add appropriate validation rules
- Testing: Test creation, editing, and submission
- Routing: Follow Next.js app router conventions
- Authentication: Add appropriate middleware protection
- Layout: Use consistent layout patterns
- SEO: Include proper meta tags and titles
- Migration File: Create numbered migration file
- RLS Policies: Include security policies
- Type Updates: Update TypeScript types
- Documentation: Update schema documentation
- Always use Supabase Auth for authentication
- Implement proper role-based access control
- Validate user permissions on server actions
- Validate all user inputs on both client and server
- Use Zod schemas for validation
- Sanitize data before database operations
- Every table must have appropriate RLS policies
- Test policies with different user roles
- Follow principle of least privilege
- Use Next.js built-in optimizations
- Implement proper loading states
- Optimize images and assets
- Minimize bundle size
- Use appropriate indexes
- Optimize queries for performance
- Implement pagination for large datasets
- Monitor query performance
- Document complex functions and components
- Use JSDoc for public APIs
- Keep comments up to date with code changes
- Update README for new features
- Include setup instructions for new dependencies
- Provide troubleshooting guides
Follow semantic versioning (semver):
- Major: Breaking changes
- Minor: New features (backward compatible)
- Patch: Bug fixes
- Update version in package.json
- Update CHANGELOG.md
- Test all features thoroughly
- Create release notes
- Tag release in Git
- Create issues for questions
- Join discussions in pull requests
- Follow the code of conduct
- Be respectful and inclusive
- Focus on constructive feedback
- Help others learn and grow
- Maintain professional communication
- Report issues to project maintainers
- Violations may result in temporary or permanent bans
- Follow GitHub's community guidelines
Thank you for contributing to HackFlow Lite! Your contributions help make hackathon registration management better for everyone.