Self-hosted · Open source · Private by default

ATHLOTES

Notes  ·  Habits  ·  Tasks  ·  Your server

GET STARTED LEARN MORE
Scroll

What it does

FEATURES

📝
Notes

Write, organize, and search your notes in a clean tree-based file system. Create folders, rename, move, and trash files — all from the browser.

Habit Tracker

Track daily habits with a persistent JSON-backed store. Check in every day and watch your streaks build over time.

🗑️
Trash & Restore

Nothing is permanently lost. Deleted notes go to a trash folder with timestamps. Restore or purge them at any time.

🎨
Custom Backgrounds

Swap between up to 5 personal background images. The app applies a heavy blur and dark overlay, so any photo looks stunning.

🔒
PIN Login

Secure your instance with a username and PIN. Session cookies are signed with Flask's secret key so only you get in.

📦
Zero Dependencies

One Python file, one HTML template, one requirement: flask>=3.0.0. No database, no bloat. Run it anywhere Python runs.


QUICK START

Step 01
Clone

Clone the repo and enter the directory. Python 3.9+ and pip are all you need to get started.

Step 02
Configure

Open app.py and set your USERNAME and PIN near the top. Add your background images to static/.

Step 03
Install

Create a virtual environment, activate it, and run pip install -r requirements.txt.

Step 04
Launch

Run python app.py. Open your browser at localhost:5000 and log in.

Terminal
# 1. Clone the repo git clone https://github.com/Niko-GitGet/ATHLOTES-Selfhosted-NoteWebApp.git cd ATHLOTES-Selfhosted-NoteWebApp # 2. Create a virtual environment python -m venv venv source venv/bin/activate # macOS / Linux # venv\Scripts\activate # Windows # 3. Install dependencies pip install -r requirements.txt # 4. Run python app.py # → http://localhost:5000

Pick your setup

DEPLOYMENT

Option 01
Local Python
localhost:5000
Development
Option 02
Docker
localhost:5000
Isolated
Option 03
LAN Server
192.168.x.x:5000
Home Network
Option 04
Railway
your-app.up.railway.app
Cloud
Security Notice

Credentials are stored as plain text in app.py — keep your repository private. Before deploying to the public internet, replace the hardcoded secret_key with a long random string loaded from an environment variable, and set a strong PIN. Railway and similar platforms provide HTTPS automatically.