Skip to content
View ashdeck's full-sized avatar

Block or report ashdeck

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
ashdeck/README.md

🧘 Ashdeck

A free, open-source Pomodoro timer, site blocker & focus dashboard β€” built right into your browser's New Tab

Stop fighting your browser. Make it work for your focus instead of against it.

GitHub stars GitHub forks License: AGPL-3.0 Contributors Open Issues PRs Welcome

Install on Chrome Β· Website Β· Report a Bug Β· Request a Feature Β· Contributing


✨ What is Ashdeck?

Ashdeck turns every new tab into a calm, distraction-free focus space. Instead of opening a blank page (or your last open tab), every new tab becomes a personal dashboard with a built-in Pomodoro timer, a site blocker for distracting websites, a simple task list, and ambient focus soundscapes β€” all in one place, all free, all open source.

No separate app to switch to. No browser extension you forget exists. Just open a new tab, and your focus tools are already there, waiting.

  • πŸ†“ 100% free β€” no premium tier, no paywalled features
  • πŸ”“ Fully open source under AGPL-3.0 β€” inspect it, fork it, self-host it
  • ⚑ Lightweight β€” built with React, TypeScript, and Vite
  • 🧩 Zero setup β€” install from the Chrome Web Store and it just works

πŸ“‹ Table of Contents


πŸš€ Features

⏱️ Pomodoro Timer A built-in Pomodoro timer that starts the moment you open a new tab β€” no app-switching required to begin a focus session.
🚫 Site Blocker Block distracting websites (social media, news, anything you choose) during focus sessions, directly from your new tab.
πŸ†• New Tab Dashboard Replaces your browser's default new tab page with a calm, purpose-built environment designed around what you're working on right now.
βœ… Task List A lightweight task list built into the dashboard β€” capture what you're working on without leaving your new tab.
🎡 Focus Soundscapes Ambient sound profiles to help you settle into deep work β€” rain, white noise, and more.
πŸŒ“ Clean, Minimal UI No clutter, no ads, no "upgrade to premium" prompts β€” just the tools you need to focus.

πŸ“₯ Install Ashdeck (for users)

The easiest way to use Ashdeck is to install it directly from the Chrome Web Store:

  1. Click Add to Chrome
  2. Open a new tab
  3. Your Pomodoro timer, site blocker, task list, and focus dashboard are ready to go β€” no account, no setup

Currently available for Chrome and Chromium-based browsers (Brave, Edge, etc. via the Chrome Web Store).


πŸ›  Run Ashdeck Locally (for developers)

Want to contribute, customize, or self-host Ashdeck? Here's how to get a local development environment running.

Prerequisites

  • Node.js (v18 or later recommended)
  • npm (comes with Node.js)

Setup

# 1. Clone the repository
git clone https://github.com/ashdeck/ashdeck.git
cd ashdeck

# 2. Install dependencies
npm install

# 3. Start the development server
npm run dev

The app will be available locally β€” open it in your browser to start developing.

Loading the extension in Chrome (unpacked)

  1. Run npm run build to generate a production build
  2. Open chrome://extensions in Chrome
  3. Enable Developer mode (top right)
  4. Click Load unpacked and select the build output folder
  5. Open a new tab to see your local build of the Ashdeck new tab dashboard

πŸ’‘ New here? Check out our CONTRIBUTING.md for a full walkthrough of the codebase and how to make your first contribution.


🧰 Tech Stack

Ashdeck is built with a modern, lightweight frontend stack:

  • React + TypeScript + Vite β€” core framework and build tooling
  • Zustand β€” lightweight state management
  • TanStack Query β€” data fetching and caching
  • React Hook Form β€” form handling
  • Axios β€” HTTP requests
  • React Hot Toast β€” notifications/toasts
  • IconSax β€” icon set
  • Generouted β€” file-based routing (Next.js-style routing for React + Vite)

πŸ“ Project Structure

Ashdeck uses a file-based router (via Generouted) to keep the codebase organized in a way that should feel familiar if you've worked with Next.js.

src/
β”œβ”€β”€ components/     # Reusable UI components (CustomButton, FormInput, etc.)
β”œβ”€β”€ store/          # Zustand stores for global state
β”œβ”€β”€ pages/          # File-based routes (Generouted)
β”œβ”€β”€ hooks/          # Custom React hooks
└── ...

A few things worth knowing before you dive in:

  • CustomButton and FormInput are ready-made components β€” FormInput is designed to work with React Hook Form out of the box.
  • Global state lives in store/ using Zustand β€” check there before adding new state management.
  • Routing follows the Generouted convention β€” new pages just need to be added to the pages/ directory.

πŸ—Ί Roadmap

  • Firefox / Edge add-on store listings
  • Customizable focus soundscape mixing
  • Site blocker scheduling (recurring focus hours)
  • Sync settings across devices
  • Dark mode themes

Have an idea? Open a feature request β€” we'd love to hear it.


🀝 Contributing

Ashdeck is built in the open, and contributions of all sizes are welcome β€” from fixing a typo to building a whole new feature.

Every star, issue, and pull request helps Ashdeck grow β€” thank you for being part of it. ⭐


πŸ’¬ Community & Support

  • 🌐 ashdeck.com
  • 🐦 Follow updates and share what you're building with Ashdeck
  • πŸ—³οΈ GitHub Discussions β€” introduce yourself, request features, or show off your setup

πŸ“„ License

Ashdeck is open source under the AGPL-3.0 License.


If Ashdeck helps you focus, consider giving it a ⭐ β€” it helps others find this project.

Pinned Loading

  1. ashdeck ashdeck Public

    Ashdeck is open source productivity app for blocking distractions and boasting focus.

    TypeScript 16 8