$ show outreachy/website
This repository is the Django/Wagtail web application that powers the Outreachy internship program, a paid, remote, open-source internship initiative focused on increasing diversity in technology. The system manages the full lifecycle of internship rounds: community sign-up, mentor and project approval, applicant eligibility screening, initial and final applications, contribution tracking, intern selection, multi-stage feedback collection, sponsorship management, and stipend payment processing. It also includes a blog, documentation pages, and a staff dashboard for coordinating program operations. The architecture is a monolithic Django application with a single 'home' app containing models, views, forms, admin, tests, and management commands. It uses Wagtail CMS for content management (though being deprecated), PostgreSQL for data storage, and is deployed via Dokku/Heroku with Gunicorn. The frontend uses Bootstrap 4, jQuery, and SASS. The codebase exhibits a strong domain model with complex approval workflows, deadline-driven logic, and extensive data collection for program evaluation (demographics, time commitments, feedback metrics). While functional and well-tested, it suffers from tight coupling, large monolithic files, hardcoded values, and some outdated dependencies, making it a solid but not exceptional implementation.
The LLM identified 5 files worth highlighting for reuse:
Provides a set of scenario classes (e.g., NewRoundScenario, CommunitySignupUnderwayScenario) that compose factory_boy factories to create reproducible database states for testing and development. This pattern isolates test setup from test logic and can be reused across different test suites or even extracted for other Django projects needing complex fixture generation.
Contains reusable view mixins such as ApprovalStatusAction (generic approval/rejection workflow with permission checks and deadline validation), ComradeRequiredMixin, and EligibleApplicantRequiredMixin. These mixins encapsulate common access control and state transition logic, reducing duplication across views and can be adapted for any Django project with similar approval-based workflows.
Implements generic email sending functions (send_template_mail, send_group_template_mail) that handle template rendering, context preparation, and bulk sending. The module abstracts away Django's email API and provides a consistent interface for all program notifications. It is self-contained and could be reused in any Django application requiring templated email dispatch.
A standalone jQuery plugin that transforms a text input into a country selection dropdown with flag icons, geo-ip default, and preferred countries. It is fully self-contained (no external dependencies beyond jQuery) and can be dropped into any web project needing a country picker with minimal configuration.
A Django management command that detects and merges duplicate user accounts based on email addresses. It demonstrates a robust pattern for data deduplication with conflict resolution (e.g., merging profiles, preserving the most recent activity). This command is isolated and could be adapted for any Django project with user accounts that may accumulate duplicates.