Skip to content

A lightweight, visual resource planning tool with a GitHub-style allocation grid. Paint workloads, track capacity, and collaborate in real-time.

Notifications You must be signed in to change notification settings

CeeFeS/TinyPlanvas

Repository files navigation

🎨 TinyPlanvas

Visual resource planning with a paint-to-plan interface. Track who does what, when, and at what capacity.

Built with Next.js Backend: PocketBase Docker Ready License: MIT


ℹ️ Note: 95% of this project was vibe-coded. Bugs and gaps are not excluded in this early version.


πŸ“Έ Screenshots

Project Dashboard

Overview of all your resource plans with resolution, owner, and sharing status

Projects Overview


Resource Planning Grid

Visual allocation grid with tasks, resources, color-coded workload, and automatic summaries

Resource Grid


Multi-Color Brush System

Choose from multiple colors and percentage values β€” create custom presets for your workflow

Brush Editor


Real-Time Collaboration

See who's online and work together β€” changes sync instantly across all users

Multi-User Sync


πŸ’‘ Why TinyPlanvas?

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.


✨ What is TinyPlanvas?

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.

🎨 Versatile Planning for Any Project

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

πŸ–ŒοΈ Multi-Color Workflow

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

🎯 Perfect for:

  • 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

πŸ”‘ Key Features

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

πŸš€ Quick Start (Development)

Prerequisites

  • Node.js 18+
  • Docker & Docker Compose (for PocketBase)

1. Clone & Install

git clone https://github.com/yourusername/tinyplanvas.git
cd tinyplanvas
npm install

2. Start PocketBase (Backend)

npm run pocketbase:start

This spins up PocketBase in Docker with automatic migrations.

3. Start Development Server

npm run dev

Open http://localhost:3000 β€” create your first admin account and start planning! πŸŽ‰


🏭 Production Deployment

TinyPlanvas is designed for easy self-hosting with Docker Compose. Here's how to get it running in production:

Option A: Quick Deploy (Recommended)

# 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:80

Option B: Step-by-Step

Click to expand detailed instructions

1. Server Requirements

  • Linux server (Ubuntu 22.04+ recommended)
  • Docker Engine 24+
  • Docker Compose v2+
  • 1 GB RAM minimum (2 GB recommended)
  • 10 GB disk space

2. Clone Repository

git clone https://github.com/yourusername/tinyplanvas.git
cd tinyplanvas

3. Configure Environment (Optional)

Create 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=

4. Build & Launch

# Build all containers
docker compose build

# Start in background
docker compose up -d

# Check status
docker compose ps

# View logs
docker compose logs -f

5. First-Time Setup

  1. Open http://your-server-ip:80 in your browser
  2. The setup wizard will guide you through creating the first admin account
  3. That's it β€” start creating projects!

6. Data Persistence

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 /

Architecture Overview

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    NGINX (Port 80)                  β”‚
β”‚              Reverse Proxy & Static Files           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚
          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
          β”‚                             β”‚
          β–Ό                             β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Next.js Frontend  β”‚     β”‚     PocketBase      β”‚
β”‚    (Port 3000)      │────▢│     (Port 8080)     β”‚
β”‚   SSR + React SPA   β”‚     β”‚   Auth + Database   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                     β”‚
                                     β–Ό
                            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                            β”‚  SQLite Volume  β”‚
                            β”‚  (pb_data)      β”‚
                            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ—ΊοΈ Roadmap

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

Future Ideas

  • πŸ“… 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!


πŸ› οΈ Tech Stack

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

πŸ“‚ Project Structure

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

🀝 Contributing

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.


πŸ“„ License

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!

πŸ› Report Bug Β· πŸ’‘ Request Feature