A Frappe/ERPNext application for running a Model United Nations (MUN) conference workflow.
This repository contains:
- A Frappe app (
mun) with MUN-focused DocTypes, workspace shortcuts, and a delegate application web form. - A React + TypeScript conference display app (
mun-details-screen) that is built and served through Frappe assets.
- Overview
- Key features
- Repository structure
- Technology stack
- Prerequisites
- Setup and installation
- Running the apps
- Testing and CI
- Deployment notes
- License
mun is intended to support conference operations such as:
- Managing committees, delegates, delegations, and team members.
- Recording motions and grading information during committee sessions.
- Collecting registrations through a delegate application web form.
- Displaying conference session state on a dedicated screen UI.
The app declares dependencies on:
erpnexthrms
- Core MUN DocTypes:
CommitteeDelegateTeam MemberDelegationDelegate ApplicationsMotionsGrading SheetCertificate
- Workspace:
MUN Toolswith shortcuts and dashboard charts. - Web Form:
delegate-applicationwith client-side field behavior based on registration type. - Website routes for conference details screen pages.
- Committee selection and route-based committee pages (
/:committee). - Roll call workflow with present-country tracking.
- Speaker queue and speech timer handling.
- Motion passing and debate timer controls.
- Conference stage progression (
Not Started→Roll Call→Opening Speeches→Debate→Voting→Closed). - Crisis mode toggle with dedicated alert/debate flow.
.
├── mun/ # Frappe app package
│ ├── hooks.py
│ ├── modules.txt
│ ├── doctype/ # MUN DocTypes
│ ├── web_form/delegate_application/
│ ├── workspace/mun_tools/
│ ├── public/mun-details-screen/ # Built frontend assets output
│ └── www/mun-details-screen.html # Frappe web entry HTML
├── mun-details-screen/ # React + TS + Vite source app
├── pyproject.toml
└── .github/workflows/ci.yml
- Backend/App framework: Frappe (Python)
- Business app dependencies: ERPNext, HRMS
- Frontend: React, TypeScript, Vite, TailwindCSS, Radix UI
- Database/infra (CI): MariaDB + Redis
- Python 3.10+
- Node.js 18+
- Yarn
- A working Frappe Bench environment
- MariaDB and Redis (required for full local Frappe execution)
From your bench directory:
bench get-app mun <path-or-url-to-this-repository>
bench new-site <site-name>
bench --site <site-name> install-app munBecause this app depends on ERPNext and HRMS, ensure both are available in your bench and installed where needed.
From the repository root:
cd mun-details-screen
yarn install
yarn buildyarn build outputs static assets into:
mun/public/mun-details-screen/
and copies the HTML entry file to:
mun/www/mun-details-screen.html
Use normal bench workflow (from your bench directory):
bench startFrom mun-details-screen:
yarn devThe Vite dev server is configured to proxy Frappe endpoints (/app, /api, /assets, etc.) to the current bench webserver.
GitHub Actions (.github/workflows/ci.yml) runs:
- Environment setup with Python 3.10 and Node 18
- Bench initialization
- App installation on a test site
bench --site test_site run-tests --app mun
From your bench directory:
bench --site <site-name> run-tests --app mun- Build frontend assets before deploying updates to the conference display.
- Ensure
erpnextandhrmsare present in the target environment. - Keep site routes aligned with
website_route_rulesinmun/hooks.py.
mun is licensed under the Unlicense. See license.txt.