{"id":50391411,"url":"https://github.com/prodev717/dblog","last_synced_at":"2026-05-30T18:30:48.678Z","repository":{"id":344347285,"uuid":"1181401278","full_name":"prodev717/dblog","owner":"prodev717","description":"DBlog is a brutalist post-apocalyptic web terminal journal that uses facial recognition login and a **60-second dead-man’s switch** which deletes unsaved logs if the user fails to confirm they’re still alive. ☢️( project made in dumb-a-thon 2.0 @ VIT-AP )","archived":false,"fork":false,"pushed_at":"2026-03-14T12:01:16.000Z","size":161,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-18T10:52:11.377Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prodev717.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-14T04:59:24.000Z","updated_at":"2026-03-14T12:01:19.000Z","dependencies_parsed_at":"2026-03-14T18:05:41.326Z","dependency_job_id":null,"html_url":"https://github.com/prodev717/dblog","commit_stats":null,"previous_names":["prodev717/dblog"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/prodev717/dblog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prodev717%2Fdblog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prodev717%2Fdblog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prodev717%2Fdblog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prodev717%2Fdblog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prodev717","download_url":"https://codeload.github.com/prodev717/dblog/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prodev717%2Fdblog/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33705207,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-30T18:30:48.071Z","updated_at":"2026-05-30T18:30:48.673Z","avatar_url":"https://github.com/prodev717.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ☢️ BUNKER OS // DBlog\n**A Brutalist Post-Apocalyptic Terminal Journal**\n\n## 📖 Concept\nDBlog is a conceptual web application designed to simulate an ancient, barely-functioning survival mainframe. Users log in to \"Bunker OS\" using raw biometric data (facial recognition) along with the traditional passwords. \n\nThe core feature is a **60-second paranoia timer**: When appending a new log entry, the terminal assumes you have been compromised. If you do not physically confirm your existence (`[ I AM STILL ALIVE ]`) within 60 seconds, the terminal triggers a panic alarm, violently crashes, and permanently purges your unsaved data.\n\n## 🚀 Key Features\n*   **Biometric Authentication:** Uses `face-api.js` to scan and encode user facial topography as the primary login mechanism.\n*   **True Terminal UX:** 100% edge-to-edge pure command-line styling. No modern styling, web 2.0 glow, or centered layout divs.\n*   **Procedural Web Audio Engine:** Bypasses ad-blockers by relying on the native Javascript `AudioContext` API to mathematically generate vintage IBM relay clicks, motherboard POST beeps, scanning telemetry, and deep CRT hums.\n*   **The 60-Second Dead Man's Switch:** Unsaved journal entries trigger a ticking visual/audio panic sequence that deletes all input if the user does not regularly reset the timer via a randomly jumping confirmation button.\n*   **Glitch Rendering:** Heavy CSS-injected procedural CRT scanlines, vertical jitter, and color-separation applied over the live webcam feed during facial scanning.\n\n---\n\n## 🛠️ Instructions for Evaluator / Setup Guide\n\nThis project requires a lightweight Python backend alongside a standard web frontend browser to handle the `face-api.js` models without breaking CORS rules.\n\n### Prerequisites\n1. Python 3.8+ installed on your machine.\n2. A webcam connected to your device.\n\n### 1. Backend Initialization\n\nThe backend server manages a local **SQLite database** that stores biometric encoded arrays.\n\n#### Setup Steps\n\n1. **Navigate to the backend directory**\n\n```bash\ncd dblog\n```\n\n2. **Install uv (if not installed)**\n\n```bash\npip install uv\n```\n\n3. **Create a virtual environment**\n\n```bash\nuv venv\n```\n\n4. **Activate the virtual environment**\n\nLinux / macOS\n\n```bash\nsource .venv/bin/activate\n```\n\nWindows\n\n```bash\n.venv\\Scripts\\activate\n```\n\n5. **Install project dependencies**\n\n```bash\nuv pip install -r requirements.txt\n```\n\n**or**\n\n```bash\nuv sync\n```\n\n6. **Run the backend server**\n\n```bash\nuv run python app.py\n```\n\nThe backend server will start at:\n\n```\nhttp://localhost:5000\n```\n\n### 2. Frontend Access\nOnce the python server is running, The Flask backend automatically serves the frontend on port 5000.\n\nOpen your browser and navigate to `http://localhost:5000/`. \n\n---\n\n## 🧪 Evaluation Testing Script\nTo test the core app features, follow this flow:\n\n### Test 1: Audio \u0026 Aesthetics\n1. Click absolutely anywhere on the blank login screen. You should immediately hear a deep `55Hz` ground loop hum begin to play. \n2. Click inside the `EMAIL` input. Type randomly. You should hear sharp, mathematically-generated vintage terminal relay snaps (`playKeystroke`) for every single key you hit.\n\n### Test 2: Biometric Registration\n1. Click `[REGISTER_NEW_NODE]`.\n2. Enter dummy data for Email and Password. \n3. Click `[SCAN_FACE_DATA]`.\n4. Allow webcam permissions. Observe the procedurally distorted, glitching camera feed and the audio telemetry sound effect while it scans.\n5. Click `[INITIALIZE_NODE]` once face data is grabbed.\n\n### Test 3: The Dead-Man's Switch\n1. Login with your new dummy account and biometrics.\n2. Click `[APPEND_LOG]`.\n3. An `[ I AM STILL ALIVE ]` panic button will appear, and the `[SECURE_CHANNEL_TIMEOUT]` meter will rapidly tick down from 60 seconds.\n4. **Do nothing.** \n5. At exactly 15 seconds, listen for the rising sawtooth panic alarm and watch the timer flash red.\n6. At 0 seconds, listen for the heavy mainframe power-down groan. The inputs will be instantly wiped blank. \n7. Try to write a new post, but this time click `[ I AM STILL ALIVE ]` before time runs out. The button will jump sideways across the screen, the panic alarm will cease, and you will get another 60 seconds of uptime.\n\n\u003e **Note on Audio:** We do not use external `.mp3` files due to cross-origin Resource Sharing (CORS) auto-play policies. If the audio fails to start upon typing, make sure you have actively clicked the HTML document body at least once to wake Chrome's `AudioContext` permission engine.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprodev717%2Fdblog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprodev717%2Fdblog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprodev717%2Fdblog/lists"}