Visual resource planning with a paint-to-plan interface. Track who does what, when, and at what capacity.
βΉοΈ Note: 95% of this project was vibe-coded. Bugs and gaps are not excluded in this early version.
Overview of all your resource plans with resolution, owner, and sharing status
Visual allocation grid with tasks, resources, color-coded workload, and automatic summaries
Choose from multiple colors and percentage values β create custom presets for your workflow
See who's online and work together β changes sync instantly across all users
As a project manager myself, I was looking for a simple, clear tool to create resource plans and Gantt-style overviews that I could easily share with my team. What I found: most tools try to do too much.
All I wanted to know was:
When does who do what β and at what percentage or effort?
That's it. No complex dependency chains, no overloaded feature sets, no steep learning curves. Just a visual grid where I can see resource allocation at a glance.
So I built TinyPlanvas β a focused tool that does one thing well.
TinyPlanvas is a lightweight, visual resource planning tool designed to make project scheduling intuitive and beautiful. Inspired by GitHub's contribution graph, it allows you to paint resource allocations across time using a simple brush-based interface.
TinyPlanvas isn't limited to personnel planning β it's a general-purpose resource allocation tool that adapts to your needs:
| Use Case | Example |
|---|---|
| π₯ Team Capacity | Plan developer workload across sprints |
| π Equipment & Assets | Schedule vehicle or machine usage |
| π’ Room Booking | Visualize meeting room availability |
| π° Budget Allocation | Track spending across time periods |
| π¦ Inventory Planning | Plan stock levels and procurement |
| π― Target vs. Actual | Create baseline plans, then track actual progress with different colors |
One of TinyPlanvas' unique features is the ability to work with multiple colors. This enables powerful workflows:
- Target vs. Actual Plans β Use one color for planned allocations, another for actual values
- Category Coding β Different colors for different project types or priorities
- Status Tracking β Green for confirmed, yellow for tentative, red for at-risk
- Team Differentiation β Each team member gets their own color
- Project Managers β Plan team capacity across multiple projects
- Team Leads β Visualize workload distribution at a glance
- Freelancers β Track your own time allocation across clients
- Operations Teams β Schedule equipment, rooms, or any shared resource
- Small Teams β Collaborate on resource planning with real-time updates
| Feature | Description |
|---|---|
| ποΈ Paint-to-Plan | Click and drag to paint allocations β as intuitive as using a brush |
| π Multi-Resolution | View by Day, Week, Month, or Year β zoom in or out as needed |
| π¨ Color-Coded Workload | Visual heatmap shows allocation intensity instantly |
| π₯ Real-time Collaboration | See changes from teammates live with PocketBase subscriptions |
| π User & Permission System | Share projects with view or edit access |
| π± Responsive Design | Works beautifully on desktop and tablet |
| π Multi-Language | Built-in i18n support (German & English) |
| π³ One-Command Deploy | Docker Compose setup for instant production deployment |
- Node.js 18+
- Docker & Docker Compose (for PocketBase)
git clone https://github.com/yourusername/tinyplanvas.git
cd tinyplanvas
npm installnpm run pocketbase:startThis spins up PocketBase in Docker with automatic migrations.
npm run devOpen http://localhost:3000 β create your first admin account and start planning! π
TinyPlanvas is designed for easy self-hosting with Docker Compose. Here's how to get it running in production:
# 1. Clone the repository
git clone https://github.com/yourusername/tinyplanvas.git
cd tinyplanvas
# 2. (Optional) Configure environment
# Create .env file for custom settings
cat > .env << EOF
APP_PORT=80
NEXT_PUBLIC_POCKETBASE_URL=
EOF
# 3. Build and start everything
docker compose up -d --build
# 4. Done! Access at http://your-server:80Click to expand detailed instructions
- Linux server (Ubuntu 22.04+ recommended)
- Docker Engine 24+
- Docker Compose v2+
- 1 GB RAM minimum (2 GB recommended)
- 10 GB disk space
git clone https://github.com/yourusername/tinyplanvas.git
cd tinyplanvasCreate a .env file in the project root:
# Port to expose the application (default: 80)
APP_PORT=80
# Leave empty for same-origin requests (recommended)
# Only set if running behind a different reverse proxy
NEXT_PUBLIC_POCKETBASE_URL=# Build all containers
docker compose build
# Start in background
docker compose up -d
# Check status
docker compose ps
# View logs
docker compose logs -f- Open
http://your-server-ip:80in your browser - The setup wizard will guide you through creating the first admin account
- That's it β start creating projects!
All data is stored in a Docker volume called pocketbase_data. To backup:
# Create backup
docker run --rm -v tinyplanvas_pocketbase_data:/data -v $(pwd):/backup alpine tar czf /backup/pb_backup.tar.gz /data
# Restore backup
docker run --rm -v tinyplanvas_pocketbase_data:/data -v $(pwd):/backup alpine tar xzf /backup/pb_backup.tar.gz -C /βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β NGINX (Port 80) β
β Reverse Proxy & Static Files β
ββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββ
β
ββββββββββββββββ΄βββββββββββββββ
β β
βΌ βΌ
βββββββββββββββββββββββ βββββββββββββββββββββββ
β Next.js Frontend β β PocketBase β
β (Port 3000) ββββββΆβ (Port 8080) β
β SSR + React SPA β β Auth + Database β
βββββββββββββββββββββββ βββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββ
β SQLite Volume β
β (pb_data) β
βββββββββββββββββββ
We have exciting features planned for TinyPlanvas! Here's what's coming:
| Status | Feature | Description |
|---|---|---|
| π² | UI Improvements | Enhanced visual polish, animations, and micro-interactions |
| π² | Dark Mode | Easy on the eyes for late-night planning sessions π |
| π² | REST API | Public API endpoints for integrations and automation |
| π² | Export: PDF | Generate beautiful PDF reports of your project plans |
| π² | Export: XLSX | Excel-compatible exports for stakeholder reporting |
| π² | Export: CSV | Simple data export for analysis and backups |
- π Calendar integration (iCal, Google Calendar)
- π Analytics dashboard with utilization metrics
- π Notification system for overallocation warnings
- π·οΈ Tags and categories for resources
- π± Progressive Web App (PWA) support
π¬ Have a feature request? Open an issue on GitHub!
| Layer | Technology |
|---|---|
| Frontend | Next.js 14, React 18, TypeScript |
| Styling | Tailwind CSS, custom "paper" design system |
| State | Zustand, TanStack Query |
| Backend | PocketBase (Go-based BaaS) |
| Database | SQLite (via PocketBase) |
| Deployment | Docker, Docker Compose, NGINX |
| Icons | Lucide React |
tinyplanvas/
βββ src/
β βββ app/ # Next.js App Router pages
β βββ components/ # React components
β β βββ auth/ # Login & Setup screens
β β βββ grid/ # Planning grid & brush editor
β β βββ layout/ # Header, sidebar
β β βββ project/ # Project-specific components
β β βββ settings/ # Settings panels
β β βββ ui/ # Reusable UI components
β βββ lib/ # Utilities, hooks, contexts
β βββ store/ # Zustand state management
βββ pocketbase/
β βββ pb_migrations/ # Database schema migrations
β βββ Dockerfile
βββ nginx/
β βββ nginx.conf # Reverse proxy configuration
βββ docker-compose.yml # Production deployment
βββ package.json
Contributions are welcome! Whether it's:
- π Bug reports
- π‘ Feature suggestions
- π Documentation improvements
- π§ Code contributions
Please feel free to open an issue or submit a pull request.
This project is licensed under the MIT License β see the LICENSE file for details.
If you find TinyPlanvas useful, consider giving it a β on GitHub!



