Side project · 2016–2026

projectr

A task management app built for one person — me. What happens when the developer and the user are the same person with ADHD and strong opinions about outlines.

Role
Designer, developer
Stack
Angular v19, TypeScript, Firebase Firestore, custom SCSS
Hosted
GitHub Pages
Status
Active — beta
projectr task management app interface
The problem

I needed a task manager that thought the way I do.

I have ADHD, which means task management isn't optional — it's how I stay functional. I'd tried every app I could find, but none of them worked the way my brain works. They were either too simple, too complex, or organized around teams and collaboration when I just needed to manage my own work as a freelancer.

I was also a big fan of Workflowy — a minimalist, keyboard-navigable outline tool — and I wanted that same interaction model applied to actual project management. So I built it myself.

I also had a practical need: my job at the time required tracking how much time I spent on individual tasks. I wanted that built into the same tool I was already using to manage my work, not as a separate app.

The original version launched in 2016. What exists today is a complete rewrite, built in 2026 with a decade of additional perspective.

What it does

Deeply nested, keyboard-first task management.

projectr organizes work in a flexible hierarchy — clients, projects, tasks, and subtasks that can nest as deeply as the work requires. This maps to how freelance and solo work is actually structured without imposing artificial limits on how you think about it.

The task list is keyboard-navigable in the style of an outline editor — you can create, nest, reorder, and complete tasks without touching the mouse. Keeping your hands on the keyboard isn't just a power-user feature; it reduces the constant small context shifts that interrupt focus.

Time tracking is built directly into individual tasks. Start a timer when you begin work, stop it when you're done. Elapsed time accumulates across sessions and rolls up so you can see where your hours are actually going.

The beta is actively in development. These core features are functional; more is being built.

Technical decisions

Then: get it working. Now: get it right.

The original projectr was built with AngularJS and plain JavaScript — the tools I knew best in 2016. Angular Material provided the component library, and Firebase Realtime Database handled the backend. It worked. It accomplished what I needed. But the design was function over form in every sense: the Angular Material components were essentially unstyled defaults, and it showed.

The rewrite started from scratch. Angular v19 and TypeScript replaced the original stack — modern Angular's reactivity model handles the real-time data streams from Firebase significantly more cleanly, and TypeScript gives the data layer the structure it always needed. A Task, a Project, a Client as first-class types rather than plain JavaScript objects.

Firebase Firestore replaced the Realtime Database. The document model maps more naturally to the app's nested hierarchy than the original's JSON tree structure.

The styling approach changed completely. Custom SCSS — no component library — because this time the visual design was the point, not an afterthought. projectr is built as craft software: intentionally designed for individuals by a solo developer, the software equivalent of something you'd find at a farmers market rather than a SaaS catalog. The UI is meant to feel warm and considered. Colors were chosen for what they do psychologically — promoting focus and calm without draining energy. The hierarchy is visually obvious at a glance. The active focus is always clear. Cognitive load was treated as a constraint, not an afterthought, because the app is built for people like me.

GitHub Pages still handles hosting. The move to Angular and TypeScript introduced a build step via GitHub Actions, but the deployment model is otherwise unchanged — the app is still a static front end backed by a cloud database.

Reflection

Building it again, differently.

The original version of projectr was the first non-trivial application I'd built entirely on my own. The choices I made then were right for where I was. The rewrite gave me a chance to find out what I'd actually learned.

Some things didn't surprise me. Modern Angular, TypeScript, a document database — these were obvious improvements the moment I sat down to plan it. The architecture I wanted in 2016 and the architecture I built in 2026 weren't that far apart in concept. The difference was execution: I had the skills to do it properly this time.

What surprised me was how much the design thinking changed. The original was a tool I built to solve a problem. The rewrite became a statement about what software for individuals could feel like — considered, warm, built by a person rather than assembled from components. That wasn't in the plan when I started. It emerged.

The rewrite was also developed with AI assistance — Claude as a creative and technical collaborator throughout. I drove every decision, but many of those decisions were made after working through ideas with an AI partner. We established a phased development plan together; for each phase I worked with Claude Code to execute it, reviewed the output, tested manually, and iterated before moving on. The AI didn't build projectr. It helped me build it faster and think through it more clearly than I would have alone.

projectr is still in active development. The foundation is solid. The work continues.