Project planning for technical teams
Plan visually. Version it like code.
Drag tasks, link dependencies and assign people on a Gantt chart. Mainspring writes everything to a plain-text plan you can commit, diff and review alongside your work, and a proven scheduling engine works out the dates.
- No syntax to learn
- Your files, your repo
- Real resource leveling
- Open source
Early preview: today you edit the text and see the Gantt. Drag-and-drop editing is coming next.
Plans as code
Why your plan belongs in your repository.
A plan in your repository gets everything your code already has.
Review plan changes like code
A change to the plan is a diff. Your team comments on the lines and approves it before it lands.
History and who changed what
Every version is a commit with an author and a message. See when a date moved, and why.
Branch a what-if
Try another staffing or scope on a branch. Merge it, or throw it away.
No vendor lock-in
Your plan is a text file in your repository, not a record in someone else’s database.
Plain text outlives any tool
Any editor and any tool can read it, now and later.
Mainspring does not commit for you yet. Copy the text into your repository today. Saving to a folder and GitHub sync are coming.
An illustration. The schedule diff is coming. The review itself works in any git host today.
No syntax to learn
No syntax to learn.
Build the plan on the Gantt chart. Every drag or field edit becomes a small, clean text change, so you never need to learn the file format. If you like the syntax, the text editor is right there, with completion and inline errors, and both views stay in sync.
Drag, link and assignComing
Resize a bar, draw a dependency, drop a person on a task.
Every change is a small text editComing
Only the lines you touched change, so diffs stay clean and undo works.
The text editor is right there
Completion, inline errors and keyword docs. Edit the text and the chart follows.
Visual editing is the next step. Today you edit the text and the Gantt follows. Dragging comes next.
The scheduling engine
A scheduler that does the hard part.
You say what needs doing and who is free. The scheduler works out the dates, and works them out again whenever anything changes.
Effort, not guesses
Ten days of work for two people takes five days on the calendar. Swap who is on the task and the dates follow.
Nobody is double-booked
A person works on one thing at a time. If Ana is busy, the next task waits until she is free, or goes to someone you named instead.
Holidays and leave
Mark public holidays and time off. Work skips them, and the finish date accounts for them.
The critical path
The chain of tasks that sets your finish date. A slip on it moves the finish, so the chart marks it in red.
Powered by TaskJuggler, a mature open-source scheduler. On our golden test plans, the results are identical to its own command-line tool.
Who it is for
For people who already live in git.
If your code already has branches, reviews and history, your plan can too.
Engineering leads
Keep the plan beside the code. Review a change to the schedule the way you review a change to the software.
Technical project managers
Plan with real effort, people and dependencies, and keep a history of every change to the plan.
Hardware and systems teams
Boards, firmware, test rigs and suppliers in one plan, in the same repository as the project files.
What you get
What works today.
Everything in this first list is in the app now.
A scheduling engine you can trust
TaskJuggler 3.8.4 runs in your browser. On our golden test plans, its results are identical to the native tool.
Plain text, in your repository
Your plan is a .tjp file, and the text is the only source of truth. It diffs and merges like code.
An editor that helps
Live scheduling as you type, inline errors and completion. The keyword docs are generated from TaskJuggler itself.
A Gantt beside the text
Split view shows the editor and a read-only Gantt chart side by side, with milestones, dependency links and the critical path.
Light, dark and every screen
It follows your system’s light or dark setting. Phone, tablet and desktop layouts show the same plan.
Free and local
No sign-up, and no server holds your plan. Mainspring is open source under GPL-2.0-or-later.
On the way
Visual editing is the next step. These are planned, and not in the app yet.
Visual editing
ComingDrag bars, links and rows. Every change is written back as a minimal text edit, with undo.
Workload and resources
ComingA heatmap of who is busy and who is free, by day, week or month.
Plan health checks
ComingFlags tasks with missing logic, hard date constraints and overloaded people.
Save and sync
ComingSave to a folder. Sync with GitHub and see a schedule diff before you commit.
Install and work offline
ComingInstall Mainspring as an app and keep working with no connection.
Scenarios and tracking
ComingCompare what-ifs against a baseline, and track progress against a status date.
On every screen
The same plan, in your pocket.
On a desktop, the text and the chart sit side by side. On a phone, a tab bar switches between the plan, the Gantt and the text. The layouts for phone, tablet and desktop are built together.
- Touch targets are at least 44 pixels on phones and tablets.
- Light and dark follow your system.
- The same scheduler runs on every screen.
FAQ
Questions, answered.
Do I need to know TaskJuggler?
No. The aim is that you never write the syntax by hand: you drag and fill in fields, and Mainspring writes the file. Visual editing is coming. Until then you edit the text, and the editor’s completion, inline errors and keyword docs help you along.
Where do my plans live?
In your browser tab, today. Changes stay there until saving arrives, so copy your text out before you close the tab. Saving to a folder and GitHub sync are coming, and your plan will always be a plain text file you own.
Is it free?
Yes. Mainspring is open source under GPL-2.0-or-later. There is no sign-up, and no server holds your plan.
Can I use my existing TaskJuggler files?
Yes. Mainspring runs TaskJuggler 3.8.4 itself, and a plan is an ordinary .tjp file. Paste it into the editor today. Opening files from a folder is coming.
Built on TaskJuggler
Built on TaskJuggler.
Mainspring does not reimplement scheduling. It runs TaskJuggler 3.8.4, the open-source project scheduler, unmodified, inside a Web Worker in your browser. TaskJuggler is the work of its authors and contributors. Learn more at taskjuggler.org.
TaskJuggler is free software under the GNU GPL, version 2. Mainspring ships it unmodified, with its notices. Mainspring itself is licensed GPL-2.0-or-later. It is an independent project, not an official TaskJuggler release.
The movement
- Scheduler
- TaskJuggler 3.8.4
- Runs on
- ruby.wasm, in a Web Worker
- Source of truth
- .tjp and .tji text
- Server for your plan
- None
- Licence
- GPL-2.0-or-later
Try a plan in your browser.
The app opens with a sample plan. Edit the text and watch the Gantt and the dates change. No account and nothing to install.
Early preview: changes stay in your browser tab until saving arrives. Copy your text before you close the tab.