Introducing Board
26 August 2026
Introducing Board, the minimal tactics board that is yours. It is free and open source. Use our hosted version or self-host it, then adapt it to the way you work.
A coach can use it to plan a training session. A writer can make a graphic for an article. An analyst can import a broadcast screenshot and draw over it.
I built Board because I didn’t like any of the other tactics boards. I wanted one I could change instead of waiting for someone else to add the next new feature.
It offers the basics that you can build and extend. Adapt it to the way you work.
Use it in your browser or self-host it. Keep it simple, or add your own backgrounds, assets, and skills. Self-host it to add your own extensions.
I didn’t want to change how I work to fit the software. I wanted to change the software. Now you can too.
You can use the same graphics you already use, but with more tools and freedom of choice.
If you need a tool it doesn’t have, you can build an extension. Teach an agent your terminology with skills. When you want help, invite another person or an agent into the project to collaborate in real-time.
Free and open source
Start with a blank pitch or load a real squad in its kit colors. Choose a light or dark theme. Add players, the ball, arrows, zones, icons, text, the score, clock, date, team names, and team codes.
Board saves each project in your browser. Free keeps three projects and three saved boards editable on your device; older saved boards remain available read-only. Export a project file to move your work to another device, or export a board as a PNG.
The source code is available under the MIT License, apart from identified third-party material and the Tactics Journal name and marks. You can self-host Board, change the code, and use every local editing and export feature without paying for a Board License or Pro.
Third-party extensions currently run only on a self-hosted Board. Managed sync, collaboration, and agent links use Tactics Journal’s service and are not included when you self-host.
To self-host it, run one command:
docker run --rm -p 8080:8080 ghcr.io/tacticsjournal/board:latest
Then open localhost:8080. If you would rather not use Docker, download a release archive and serve the folder with any web server.
To change it, fork the repository, edit the code, and build your own copy. The README covers all three routes. Your boards live in that browser, so a self-hosted copy keeps nothing on a server.
The local editor is free
Every browser-local Board feature is free on the hosted and self-hosted app: every pitch style, custom backgrounds and assets, reusable groups, animation, and unlimited local projects and exports.
Use a vertical, live, two-pitch, or training pitch. Add a broadcast screenshot or photograph as a background and draw over it.
Add cones, goals, and your own reusable assets. Use your own backgrounds and branding. An export made with your background does not carry the Tactics Journal watermark.
Save several objects as one reusable group. Reuse a corner routine, pressing trap, or training exercise on another board, then edit any object in the group.
To show movement, copy a board and move the players to their next positions. Set the time between each board, then export the project as a GIF or video. Add notes to each board and include them as captions.
Skills and extensions
A skill is a set of instructions an agent follows when it works on a project. Tell it that dashed arrows mean defensive movement. Give it the words you use with your players. Tell it how you structure a training session. The agent receives the skills you enabled when you give it access to that project.
An extension adds a tool to Board. Official ones are bundled with the app and run everywhere; the ones you write yourself run on a self-hosted Board, sandboxed and limited to the permissions they ask for. One could find the players and pitch corners in a broadcast screenshot, then map them onto a clean board. If you want a formation generator, build one. If your club has its own way of making session plans, build that. You don’t have to wait for me to add it.
Board extensions are simple to make. 3D View began as a rough thing I wrote in two prompts. It now ships with Board, hosted and self-hosted, and orbits the live board through 360 degrees while you edit it.
We will add and maintain official extensions on the hosted Board. We will also choose some extensions made by the community for the official collection. When you self-host, you can add as many extensions to your build as you want, with up to ten enabled on any one project. You are limited only by your imagination.
You could take years of your past training sessions, point an agent at the folder, and have it generate new sessions for you in one prompt. The possibilities are endless with skills and extensions.
Pro
Pro adds hosted continuity to the free local editor. It backs up and syncs your projects, backgrounds, uploaded assets, reusable groups, team setup, and skills across devices.
Imagine a coach on the sideline with Board open on a tablet and an analyst in the stands on a computer. They can work together in real time to make match graphics they can show the players.
Invite someone by email, @username, or a link. They do not need Pro. Give them editing or read-only access. Changes appear in real time at up to 30 frames per second.
Claude, ChatGPT, or another agent can create a Board project and return an editable link. Give an agent a link to an existing project and it can read and edit only that project for 24 hours. It follows the skills you attached to the project.
Pro costs $14.99 billed monthly or $12.99 a month billed yearly at $155.88. The yearly plan saves $24 compared with 12 monthly payments.
I can’t wait to see what you create.
Board The minimal tactics board that is yours. Available in your browser, on a phone or desktop. Try now for free, no account needed.
2026
September
- 30th
- 30th
- 29th
- 29th
- 29th
- 29th
- 28th
- 28th
- 28th
- 28th
- 27th
- 27th
- 27th
- 26th
- 26th
- 26th
- 26th
- 25th
- 25th
- 24th
- 24th
- 24th
- 24th
- 23rd
- 21st
- 21st
- 21st
- 20th
- 20th
- 20th
- 20th
- 19th
- 13th
- 12th
- 10th
- 8th
- 3rd
August
- 28th
- 27th
- 26th
- 23rd
- 18th
- 16th
- 8th
- 8th
July
- 29th
- 27th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 19th
- 17th
- 17th
- 16th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 7th
- 6th
- 5th
- 5th
- 4th
- 3rd
- 2nd
- 1st
- 1st
June
- 30th
- 30th
- 29th
- 29th
- 29th
- 28th
- 28th
- 27th
- 26th
- 26th
- 25th
- 24th
- 24th
- 23rd
- 22nd
- 21st
- 21st
- 21st
- 20th
- 19th
- 19th
- 18th
- 17th
- 17th
- 16th
- 15th
- 15th
- 14th
- 14th
- 13th
- 13th
- 12th
- 12th
- 11th
- 11th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 2nd
- 1st
- 1st
May
- 31st
- 31st
- 30th
- 30th
- 29th
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 19th
- 18th
- 17th
- 17th
- 16th
- 15th
- 14th
- 13th
- 12th
-
How analysts should measure whether high pressing is creating control or exposing transition attacks11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 2nd
- 1st
- 1st
March
- 24th
January
- 18th
2025
December
- 21st
- 16th
- 7th
- 3rd
November
- 29th
- 24th
- 20th
- 14th
- 12th
- 8th
- 7th
- 4th
- 2nd
October
- 31st
- 28th
- 22nd
- 20th
- 19th
- 12th
September
- 30th
- 28th
- 26th
- 24th
- 23rd
- 20th
- 18th
- 16th
- 14th
- 4th
- 3rd
- 1st
August
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 20th
- 17th
- 14th
- 12th
- 10th
- 8th
- 4th
July
- 10th
- 5th
- 4th
June
- 29th
- 14th
- 13th
- 12th
- 2nd
May
- 29th
- 25th
- 22nd
- 20th
- 15th
- 8th
April
- 30th
- 9th
March
- 28th
- 5th
February
- 26th
- 20th
- 19th
- 12th
- 8th
January
- 31st
- 30th
- 16th
- 12th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 2nd
- 1st
2024
December
- 31st
- 30th
- 29th
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 19th
- 18th
- 17th
- 16th
- 15th
- 14th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 2nd
- 1st
November
- 30th
- 29th
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 19th
- 18th
- 18th
- 16th
October
- 21st
- 12th
- 11th
- 9th
- 7th
- 6th
- 4th
- 3rd
- 2nd
- 1st
September
- 30th
- 29th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 19th
- 18th
- 17th
- 16th
- 15th
- 14th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 4th
- 3rd
- 2nd
- 1st
August
- 31st
- 30th
- 29th
- 28th
- 27th
- 26th
- 25th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 20th
- 19th
- 19th
- 18th
- 17th
- 16th
- 15th
- 14th
- 14th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 2nd
- 1st
July
- 31st
- 30th
- 29th
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 19th
- 18th
- 17th
- 16th
- 15th
- 15th
- 14th
- 13th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 2nd
- 1st
June
- 30th
- 29th
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 19th
- 18th
- 17th
- 16th
- 15th
- 14th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 2nd
- 1st
May
- 31st
- 30th
- 29th
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 20th
- 19th
- 18th
- 17th
- 16th
- 15th
- 14th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 2nd
- 1st
April
- 30th
- 29th
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 19th
- 17th
- 16th
- 15th
- 14th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 3rd
- 2nd
- 1st
March
- 31st
- 30th
- 29th
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 21st
- 20th
- 19th
- 18th
- 17th
- 16th
- 15th
- 14th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 1st
February
- 28th
- 27th
- 26th
- 25th
- 23rd
- 22nd
- 21st
- 20th
- 18th
- 15th
- 14th
- 13th
- 12th
- 11th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 2nd
- 1st
January
- 31st
- 30th
- 29th
- 28th
- 27th
- 25th
- 24th
- 22nd
- 21st
- 20th
- 18th
- 17th
- 16th
- 15th
- 14th
- 13th
- 12th
- 11th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 2nd
- 1st
2023
December
- 31st
- 29th
- 28th
- 27th
- 25th
- 24th
- 22nd
- 21st
- 20th
- 19th
- 18th
- 17th
- 16th
- 15th
- 13th
- 12th
- 11th
- 10th
- 8th
- 7th
- 6th
- 4th
- 3rd
- 2nd
- 1st
November
- 30th
- 29th
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 18th
- 17th
- 16th
- 15th
- 14th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
October
- 31st
- 30th
- 29th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 19th
- 17th
- 15th
- 14th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 1st
September
- 30th
- 28th
- 26th
- 25th
- 24th
- 22nd
- 21st
- 20th
- 19th
- 18th
- 17th
- 9th
- 3rd
August
- 31st
- 28th
- 27th
- 26th
- 21st
- 20th
- 15th
- 14th
- 13th
- 12th
- 7th
- 4th
- 3rd
July
- 31st
- 30th
- 28th
- 27th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 19th
- 18th
- 17th
- 16th
- 15th
- 14th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
June
- 11th
- 10th
- 7th
- 5th
- 4th
- 1st
May
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 19th
- 18th
- 17th
- 16th
- 15th
- 14th
- 13th
- 11th
- 10th
- 9th
- 8th
- 7th
- 5th
- 4th
- 3rd
- 2nd
- 1st
April
- 29th
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 22nd
- 21st
- 20th
- 2nd
March
- 6th
February
- 27th
- 20th
- 5th
January
- 19th