Welcome! We're excited that you want to contribute to this project. 🎉
This project aims to help you learn Django while practicing vibecoding with the Antigravity editor.
⚠️ IMPORTANT: Vibecoding doesn't mean coding without thinking! The goal is to understand what you're doing while using AI capabilities to accelerate your development.
Implement the following models with their relationships:
- Shareholder
- Buyer
- Share
- Each
ShareholderandBuyermust be linked to a DjangoUser - A
Shareholdercan create one or moreShares - A
Buyercan purchase zero or moreShares - A
Shareis created by one and only oneShareholder - A
Sharecan be purchased by one or moreBuyers
- Use appropriate Django relationships (
ForeignKey,ManyToManyField, etc.) - Implement
__str__()methods for better readability - Add
Metaclasses withverbose_nameandordering - Consider
related_nameto facilitate reverse queries
Create a modern and attractive user interface using HTML, CSS, and JavaScript.
- 🏠 Homepage: Platform presentation
- 📝 Registration page: Account creation (with role selection: Shareholder/Buyer)
- 🔐 Login page: Authentication
- 👤 User profile page: Details based on user type (Shareholder/Buyer)
- ➕ Share creation page: Form for Shareholders
- 📊 Share details page: Complete information about a share
- 🛒 Share listing page: Catalog of available shares
- 📈 Dashboard: Overview of owned/created shares
- ✨ Modern and professional interface
- 📱 Responsive design (mobile, tablet, desktop)
- 🎨 Cohesive color palette
- ♿ Basic accessibility (labels, contrast, keyboard navigation)
- 🚀 Subtle animations and smooth transitions
Note: Initially, you can create static mockups before Django integration.
Implement Django views and integrate them with templates.
- Use Django Forms for data validation
- Implement Class-Based Views (CBV) or Function-Based Views (FBV) as appropriate
- Handle permissions (only Shareholders can create Shares)
- Add user feedback messages (success, errors)
- Implement pagination for lists
- Handle error cases (404, 403, etc.)
- Follow standard Django structure
- Separate business logic from views (use services if necessary)
- Keep your views simple and readable
- Use serializers or forms for validation
- ✅ Follow PEP 8 (Python style guide)
- 📝 Comment complex code
- 🧪 Write unit tests (bonus)
- 🔒 Always validate data server-side
- 🚫 Never expose sensitive data
- 📌 Atomic and descriptive commits
- 💬 Clear commit messages in French or English
- Recommended format:
type: short description - Examples:
feat: add Shareholder modelfix: correct Share form validationstyle: improve homepage design
- Recommended format:
# Fork the project on GitHub, then clone your fork
git clone <your-fork-url>
cd python-django-workshop
# Add the original repo as upstream remote
git remote add upstream <original-repo-url>
# Create a branch for your feature
git checkout -b feat/feature-name⚠️ Before starting: Sync with the main branchgit fetch upstream git rebase upstream/main
- 💻 Develop your feature
- 🧪 Test locally
- 📝 Commit regularly
- ✅ One PR = One feature
- ❌ No long PRs (avoid PRs with 500+ lines)
- 🔄 Sync before each PR
git fetch upstream git rebase upstream/main git push origin feat/feature-name
## Description
Brief description of what this PR does.
## Type of Change
- [ ] New model
- [ ] New view
- [ ] New template
- [ ] Bug fix
- [ ] Design improvement
## Checklist
- [ ] My code follows the project conventions
- [ ] I have tested locally
- [ ] I have synced with the main branch
- [ ] My commits are clear and atomic
- [ ] I have updated documentation if necessary
## Screenshots (if applicable)
Add screenshots for visual changes.- Maintainers (@yokwejuste and @Edmond22-prog) will review your PR
- Be responsive to comments
- Make requested changes
- Once approved, your PR will be merged! 🎉
If you have questions or encounter difficulties:
- 🔍 First consult the Django documentation
- 💬 Create an Issue on GitHub with:
- A clear title
- A detailed description of the problem
- Steps to reproduce (if bug)
- Your environment (OS, Python version, etc.)
- 🏷️ Tag @yokwejuste and @Edmond22-prog
Do you have an idea for an additional feature? Great!
- Create an Issue with the
enhancementlabel - Describe your proposal
- Wait for feedback before starting implementation
Thank you for contributing to this project and being part of the Python Cameroon community! 🇨🇲
Happy Coding! 🚀