Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Split a quarter of story points across people and deliverables, and flag every gap before planning day
Translation pending
BusinessJavaScript · CSSGitHub @energon-a-secasOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Drag people onto deliverables and see the capacity gaps
Loading the full README.
Read the full README ↗Drag people onto deliverables and see the capacity gaps
Reparto turns a quarter into story points and splits them across the work. Set the week (four focus days, one for meetings), the sprint and the plan length, and it works out what one engineer can carry, rounded onto the same Fibonacci scale the work is sized on: 8 points a sprint over 4 sprints is 32, planned as 34. Everyone else scales from that engineer, so a vacation day moves a person a little, not 13 points. Then drag people onto deliverables and read the flags: what has no estimate, who is missing, who is booked past their capacity, and how many engineers the gap is worth.
Public holidays, team days off and each person's vacations come out of the calendar before any of that. A team can span several countries, and each person follows their own: in the same week, 12 October costs the engineer in Chile a focus day and leaves the one in Mexico alone.
Live: reparto.neorgon.com
ES modules require an HTTP server (not file://):
make serve # http://localhost:8893
make test # the arithmetic, the calendar, the flags, plans and exports, under Node
Regenerating the holiday files (once a year, or to extend the years) needs npm, and
installs date-holidays outside the repo:
make holidays
make icons # the same for js/icon-data.js, from lucide-static
reparto-site/
├── index.html # HTML shell: formula, calendar, totals, roster, board, flags
├── css/
│ ├── style.css # Fleet template kit plus the accent and status tokens
│ └── app.css # The planner's layout
├── js/
│ ├── app.js # Entry point: load, render, bind
│ ├── state.js # The plan, validation (normalizeDoc), undo per plan, mutations, Later and Done
│ ├── plans.js # Every plan in this browser: open, switch, delete, restore
│ ├── capacity.js # Fibonacci scale and rounding, per-person capacity, analyze()
│ ├── calendar.js # Sprint dates, holidays, team days off, vacations, focus days
│ ├── holidays.js # Loads data/holidays/<CC>.json on demand
│ ├── flags.js # What is missing or wrong, with targets and fixes
│ ├── seed.js # The example plan (6 people, 7 deliverables)
│ ├── render.js # The formula and the totals; afterChange()
│ ├── render-calendar.js # Start date, country, sprint dates, days off
│ ├── render-board.js # Roster rows and deliverable cards
│ ├── render-table.js # The table view, and the Later and Done lists
│ ├── render-map.js # The map: People (schedule bars) and Deliverables (bars, landing dates) over the quarter
│ ├── map-edit.js # Drag a vacation onto a row, drag or resize a deliverable's sprints
│ ├── timeline.js # Deliverable spans, per-sprint splits, landing dates
│ ├── quarters.js # Fiscal quarters: labels, ranges, the quarter picker
│ ├── icons.js # icon(): inline SVG from icon-data.js (generated from Lucide)
│ ├── render-flags.js # The flags panel
│ ├── dnd.js # Pointer drag, edge scroll, tap to carry
│ ├── actions.js # Drops, carry, flag fixes, jump to a target
│ ├── popover.js # Estimate picker, share editor, a deliverable's note and moves
│ ├── confirm.js # The Wipe and Delete confirmation
│ ├── person-editor.js # Load, sprints away, country, vacations
│ ├── events.js # Delegated clicks, changes, keys
│ ├── io.js # Share link, Markdown report, JSON
│ ├── tables.js # The plan as tables: by deliverable, by engineer, assignments, flags, settings
│ ├── formats.js # CSV (BOM, formula-safe), tab-separated for a paste, Markdown tables
│ ├── xlsx.js # .xlsx writer with no library: SpreadsheetML in a stored zip
│ ├── export-dialog.js # Pick a table, preview it, download or copy it
│ ├── modal.js # Blocking dialogs
│ └── utils.js # Small helpers
├── data/holidays/ # One JSON per country, plus index.json
├── tools/build-holidays.cjs # Regenerates data/holidays/ (make holidays)
├── tools/build-icons.cjs # Regenerates js/icon-data.js (make icons)
├── test/ # node --test
├── docs/architecture.mmd # Diagram source
├── CNAME
├── Makefile
└── README.md
Public holiday data comes from date-holidays (code ISC, data CC BY 3.0), baked into static files so the site never calls a holiday API. Icons are Lucide (ISC), inlined as SVG.