{"repo":"qu8n/focusbeacon","free":true,"listed":false,"github":"https://github.com/qu8n/focusbeacon","clone":"git clone https://github.com/qu8n/focusbeacon.git","description":"Focusmate session statistics","language":"Python","stars":67,"topics":["focusmate","metrics","dashboard","stats"],"license":"MIT","category":"dashboards-admin","readme_excerpt":"Focus beacon Focusmate session statistics & productivity dashboard View demo · Bug report · Feature request Technologies Backend - Python for data processing - FastAPI for the REST API - Supabase for the PostgreSQL database - Vercel for hosting - PostHog for logging Frontend - TypeScript for type safety - React.js for the UI - Next.js App Router for routing - TailwindCSS for styling For authentication, we use the Backend for Frontend pattern with Focusmate as the identity provider via OAuth 2.0. Focusbeacon is the first and only non-commercial app to be approved by Focusmate for this purpose! Getting started locally 1. Clone this repo to your local machine 2. Navigate to the project directory 3. Ensure the following language versions are used in your local environment: - Node.js (v22.12 or newer) - Python (v3.12) 4. Install packages with npm 5. Create a Python virtual environment 6. Install Python dependencies 7. Create an .env file in the root directory following the .env.example template and fill in the required values 8. Activate the Python virtual environment 9. Run the app in development mode. This command will start the FastAPI server and the Next.js server concurrently Running the tests None of these need credentials. The Python tests set their own fake environment before importing anything, and the Playwright suite runs entirely against ?demo=true , which reads a static fixture in the browser — so no OAuth, no Supabase and no serverless function is involved. Playwrigh","default_branch":null,"files":null,"tree":[],"storefront":"/r/qu8n","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/qu8n/focusbeacon/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}