Academia is a school-focused academic knowledge platform that helps students find answers, solve academic problems, and preserve institutional knowledge in a searchable, organized way. Think Stack Overflow or Quora, but organized by tertiary school and department, and focused on providing reliable answers and info on academic processes with things like GPA calculation, clearance, registration, SIWES, and so on.
Academia is launching first with Nigerian tertiary institutions, where the problem it solves originated. The platform is built to extend to institutions in other countries as the model proves out, see project-plan.md's Product Vision for more.
The platform is not a social feed. There is no engagement-driven scrolling or vanity metrics. The measure of success is simple: did this person find, or leave, an answer that helps someone else later.
Academia is a standalone product built and maintained under the Brand Nova umbrella.
- App: https://academia-prvw.vercel.app
- API: hosted on PythonAnywhere, documented in full below
- Docs: https://brandnova.github.io/academia/
Academia/
├── docs/ - Project documentation (MkDocs, published to GitHub Pages)
├── backend/ - Django REST Framework API
├── academia-frontend/ - Next.js application
├── CHANGELOG.md - Durable project history, grouped by phase and date
├── CONTRIBUTING.md - How to contribute, setup, branching, PR process
├── CODE_OF_CONDUCT.md
├── GOVERNANCE.md - Ownership, decision-making, and recognition policy
├── LICENSE
├── SECURITY.md - Notice on how to report security issues
└── README.md - This file
The project is documented in four core documents plus supporting logs, all under docs/ and mirrored as the frontend-facing guide:
- project-plan.md - vision, principles, roles, lifecycle rules
- feature-list.md - what's built, what's planned for later
- database-schema.md - models, relationships, constraints
- api-contract.md - the full API contract: every endpoint, request/response shapes, error formats, auth flow, rate limits
- project-overview.md - frontend-facing guide: sitemap, design philosophy, visual direction, component list, required page states
- BUILD_LOG_BACKEND.md / BUILD_LOG_FRONTEND.md - short-term working memory of current build state
- CHANGELOG.md / docs/changelog.md - durable history, one entry per phase plus docs-sync entries
- SECURITY.md - Guidelines on reporting issues related to security
If you're contributing, these documents are the source of truth. Any deviation from them should be flagged in an issue or PR discussion before it's implemented.
Backend: Django 6.0.6, Python 3.12, PostgreSQL (Supabase), Django REST Framework, JWT auth (SimpleJWT) via Google OAuth (verified directly against Google's userinfo endpoint), Redis caching with an automatic local-memory fallback, django-cors-headers, whitenoise for static files. Deployed on PythonAnywhere.
Frontend: Next.js (App Router), JavaScript, deployed on Vercel, consuming the backend purely as a versioned JSON API (/api/v1/). Tailwind v4 (CSS-first config), no third-party component library, lucide-react for icons.
Backend: complete. All 15 planned MVP phases plus three post-MVP passes (production readiness, URL/ID ergonomics, API completeness) are built, tested, and live.
Frontend: MVP complete (Phases 0 through 15) and live on Vercel. A polish phase (listed in feature-list.md and BUILD_LOG_FRONTEND.md) is open for contribution, see below.
Full phase-by-phase history is in CHANGELOG.md. Current architectural state and conventions are in BUILD_LOG_BACKEND.md and BUILD_LOG_FRONTEND.md.
Academia is now open to outside contributors. If you'd like to fix a small bug, pick up a "good first issue," or suggest an improvement, start with CONTRIBUTING.md. It covers local setup for both the backend and frontend, our branching model, commit conventions, and how a pull request gets reviewed and merged.
Please also read CODE_OF_CONDUCT.md before participating.
Academia is conceived, founded, and maintained by its original developer as a standalone product under the Brand Nova umbrella. The Brand Nova name, the Academia name, and associated branding are not covered by the code license below and remain the property of the founder. See GOVERNANCE.md for the full explanation of how ownership, decision-making, and contributor recognition work on this project.
All contributors are credited for their work, both on GitHub's own contributor graph and in CONTRIBUTORS.md, see GOVERNANCE.md for specifics.
cd backend
python3.12 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # fill in your local values
python manage.py migrate
python manage.py createsuperuser
python manage.py seed_demo_data # optional, populates realistic demo content
# add --clear to reset, --admin-email <email> to promote a real account to admin
# creates 3 fixed test users (admin/staff/regular) with predictable emails,
# run: eval "$(python manage.py print_test_tokens)" to get instant JWTs for
# all three without going through Google OAuth (local dev only, requires DEBUG=True)
python manage.py runserverSee api-contract.md for the full Google OAuth frontend implementation guide and every available endpoint.
cd frontend
npm install
cp .env.example .env.local # fill in your local values, including the backend API base URL
npm run devThe frontend expects the backend running locally (or points at a deployed backend URL via env var). See project-overview.md for the sitemap, design system, and page states every screen needs to handle.
If your contribution includes changes to the project documentation under docs/, install the documentation tooling dependencies before working on those changes:
pip install -r requirements-docs.txtThis installs the MkDocs toolchain used to build and preview the documentation locally, including the Material theme and documentation plugins.
Once installed, you can run the local documentation server from the project root:
mkdocs serveMkDocs will start a local development server and watch the docs/ directory for changes, allowing you to preview documentation updates before submitting your contribution.
The documentation dependencies are kept separate from the application's main requirements.txt because they are only needed when working on or building the project documentation.
The Academia codebase is released under the MIT License. The Academia and Brand Nova names and branding are excluded from this license, see GOVERNANCE.md.
Academia aims to become the most useful destination for students seeking answers to academic questions.