Back to all projects

todrawn.com

Language(s): Java, TypeScript

todrawn.com is a full-stack interactive whiteboard SaaS, built end-to-end with a Java 21 and Spring Boot backend and a Next.js, React, and TypeScript frontend. It is currently deployed and running in production at todrawn.com.

The canvas itself is rendered with Konva, while WebSockets carry real-time board updates between connected clients. PostgreSQL persists boards and account data, and Redis backs the parts of the system that need fast, short-lived state.

Technical Architecture

  • Backend (Spring Boot): Built on Java 21, with Spring Security handling authentication and authorization for the API.
  • Frontend (Next.js / React): A TypeScript codebase styled with Tailwind CSS, with the whiteboard canvas itself implemented on top of Konva.
  • Real-Time Layer: WebSockets propagate drawing and board state between clients, with Redis used alongside PostgreSQL for state that doesn't belong in the primary data store.
  • Data & Persistence: PostgreSQL is the system of record for boards, accounts, and related data.
      
[ Next.js / React / Konva ] <--WebSocket--> [ Spring Boot API ]
                                                    ↓
                                    [ PostgreSQL ]     [ Redis ]
      
    

Payments & Deployment

Billing runs through Stripe, integrated directly into the Spring Boot backend. Shipping and hosting are containerized and automated:

  • Payments: Stripe handles subscription and payment processing for the SaaS.
  • Containerization: The application is packaged with Docker for consistent builds across environments.
  • CI/CD: GitHub Actions automates the build and deployment pipeline.
  • Hosting: The backend runs on Google Cloud Run.

Technologies Used

Java 21Spring BootNext.jsReactTypeScriptPostgreSQLRedisWebSocketsStripeDockerGoogle Cloud Run