Skip to content

agentbyumer/Taskly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

8 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Flask Β Β  Tailwind CSS Β Β  TypeScript

Taskly

Manage Work at the Speed of Zen Flow

A highly optimized, brutally minimal, real-time Kanban board with built-in deep-work tools.


Live Demo Python Flask TypeScript Tailwind CSS License


🌐 Live Demo

taskly.muhammadumer.xyz β€” Free to use, no credit card required.

Create an account with your email or sign in instantly via GitHub OAuth.


πŸš€ Overview

Taskly is a premium, dark-mode-first task management application designed for people who want to stay in the zone. It strips away the enterprise bloat found in tools like Jira or Asana and replaces it with a beautiful, lightning-fast UI that updates in real time across all your devices.

No subscriptions. No AI upsells. Just your board, your tasks, and your flow.


✨ Key Features

Feature Description
⚑ Real-time Sync Move a card on your phone and it instantly moves on your desktop via WebSockets β€” zero polling, zero lag.
🧘 Zen Focus Mode A full-screen 25-minute Pomodoro timer that locks you in on one task at a time. Auto-completes the task when the timer fires.
🧠 Smart Workflow Tasks scheduled for today automatically transition to In Progress. Missed deadlines surface as Overdue, no manual updates needed.
πŸ”Ž Instant Global Search Filter your entire board by title, status, or date as you type, no page reloads, no delays.
πŸ“± Mobile-First Design Fully responsive with fluid drawer interactions built for touch from day one.
πŸ” Dual Auth Sign up with email/password or authenticate instantly with your GitHub account via OAuth.

πŸ—οΈ Architecture & Tech Stack

Taskly intentionally avoids heavy frontend frameworks (React, Vue, Next.js) in favor of a lean, modularized Vanilla TypeScript approach. This results in near-instant load times, minimal memory consumption, and a codebase that is simple to reason about.

Backend

Technology Role
Python 3 & Flask Lightweight API server and WebSocket host
SQLAlchemy ORM for clean, Pythonic database interaction
Flask-SocketIO Bidirectional real-time communication
uv Hyper-fast Python package management and virtual environment resolution

Frontend

Technology Role
Vanilla TypeScript Modularized, type-safe client logic, no Virtual DOM overhead
Bun Ultra-fast bundler and script runner
Tailwind CSS v4 Utility-first styling with a minimal compiled footprint
GSAP Scroll animations and particle canvas on the landing page
SortableJS Smooth, accessible drag-and-drop for the Kanban board

πŸ“‚ Project Structure

taskly/
β”œβ”€β”€ app/                      # Backend Logic (Python/Flask)
β”‚   β”œβ”€β”€ __init__.py           # Application factory
β”‚   β”œβ”€β”€ extensions.py         # DB, SocketIO, and OAuth initialisations
β”‚   β”œβ”€β”€ models.py             # Database schema (User, Task)
β”‚   β”œβ”€β”€ routes.py             # Main API and frontend route handlers
β”‚   β”œβ”€β”€ routes_auth.py        # Authentication (GitHub OAuth & Email)
β”‚   └── sockets.py            # WebSocket event listeners
β”œβ”€β”€ src/                      # Frontend Source (TypeScript + CSS)
β”‚   β”œβ”€β”€ css/
β”‚   β”‚   └── src.css           # Tailwind v4 entrypoint
β”‚   └── js/
β”‚       β”œβ”€β”€ api.ts            # Network abstraction (Fetch wrappers)
β”‚       β”œβ”€β”€ focus.ts          # Zen Mode Pomodoro timer logic
β”‚       β”œβ”€β”€ main.ts           # Core initialization and DOM binding
β”‚       β”œβ”€β”€ toast.ts          # Custom notification system
β”‚       β”œβ”€β”€ types.ts          # Shared TypeScript interfaces
β”‚       └── ui.ts             # Direct DOM manipulation handlers
β”œβ”€β”€ static/                   # Compiled Outputs (gitignored in dev)
β”‚   β”œβ”€β”€ css/                  # Tailwind-compiled CSS
β”‚   └── js/                   # Bun-bundled JavaScript
β”œβ”€β”€ templates/                # Jinja2 HTML Views
β”‚   β”œβ”€β”€ macros/
β”‚   β”‚   └── ui.html           # Reusable Jinja2 UI macros
β”‚   β”œβ”€β”€ index.html            # Animated marketing landing page
β”‚   β”œβ”€β”€ dashboard.html        # Main Kanban app view
β”‚   β”œβ”€β”€ login.html            # Auth view
β”‚   └── register.html         # Auth view
β”œβ”€β”€ main.py                   # Server entrypoint
β”œβ”€β”€ pyproject.toml            # Python project config
└── package.json              # Bun scripts and frontend dependencies

Why this structure?

  • Separation of Concerns:- Python logic lives strictly in app/. TypeScript and Tailwind live strictly in src/. They never mix.
  • Build Isolation:- src/ is raw source material. static/ holds only compiled artifacts, exactly where Flask expects them.
  • Maintainability:- Splitting the client into semantic modules (focus.ts, api.ts, ui.ts) means a developer can isolate any feature in seconds rather than scanning a 2,000-line monolith.

πŸ› οΈ Local Development

Prerequisites

1. Clone the repo

git clone https://github.com/developmentwithumer/Taskly.git
cd Taskly

2. Install dependencies

# Python backend
uv venv
uv sync

# Frontend (TypeScript + Tailwind)
bun install

3. Configure environment

Create a .env file in the project root:

SECRET_KEY=your-secret-key-here
GITHUB_CLIENT_ID=your-github-oauth-app-client-id
GITHUB_CLIENT_SECRET=your-github-oauth-app-client-secret
DATABASE_URL=sqlite:///taskly.db   # or your preferred DB URL
DEBUG=true # for development
RUN_DB_CREATE_ALL=true # create db and tables upon application startup.
OAUTH_ALLOW_INSECURE=true # this will allow to sign in over http useful for local development

4. Run the development servers

You'll need three terminal sessions running simultaneously:

# Terminal 1 β€” Flask backend
uv run main.py

# Terminal 2 β€” TypeScript bundler (watch mode)
bun run watch:js

# Terminal 3 β€” Tailwind CSS compiler (watch mode)
bun run watch:css

Then open http://127.0.0.1:5000.


🎨 Design Philosophy

Show, Don't Tell:- Information hierarchy is paramount. Color is used strictly for meaning: Cyan = Focus, Green = Done, Red = Overdue. Nothing is decorative without purpose.

Speed Above All:- Interactions are optimistic. When a user drags a task, the UI responds instantly. The network request resolves gracefully in the background. Failure states roll back silently.

Focus on the Work:- No excessive popups. No AI upsells. No complex permission systems. Just you, your board, and your flow.

"Your most productive day begins with a single step."


🀝 Contributing

Contributions, issues, and feature requests are welcome. Feel free to check the issues page.

  1. Fork the repo
  2. Create a feature branch (git checkout -b feature/your-feature)
  3. Commit your changes (git commit -m 'Add your feature')
  4. Push to the branch (git push origin feature/your-feature)
  5. Open a Pull Request

πŸ“„ License

Distributed under the MIT License. See LICENSE for details.


Built with focus, for people who focus. Β Β·Β  taskly.muhammadumer.xyz

About

A real-time Kanban board with Zen Focus Mode, WebSocket sync, and GitHub OAuth built with Flask, Vanilla TypeScript & Tailwind CSS v4.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors