{"id":28858152,"url":"https://github.com/mschreber/webserver","last_synced_at":"2026-04-14T06:03:43.989Z","repository":{"id":299429236,"uuid":"1002985357","full_name":"MSchreber/Webserver","owner":"MSchreber","description":"A basic Flask-based personal webserver for file storage, SmartHome control, and QR inventory management.","archived":false,"fork":false,"pushed_at":"2025-06-16T14:07:45.000Z","size":275,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-12T07:32:20.455Z","etag":null,"topics":["flask","html-css-javascript","mongodb","python","raspberry-pi-3","webserver"],"latest_commit_sha":null,"homepage":"https://www.maxschreber.de","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MSchreber.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2025-06-16T12:54:52.000Z","updated_at":"2025-06-16T14:18:39.000Z","dependencies_parsed_at":"2025-06-16T14:51:49.549Z","dependency_job_id":"b4722a99-9c6e-4ac8-adca-886046a5a846","html_url":"https://github.com/MSchreber/Webserver","commit_stats":null,"previous_names":["mschreber/webserver"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MSchreber/Webserver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MSchreber%2FWebserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MSchreber%2FWebserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MSchreber%2FWebserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MSchreber%2FWebserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MSchreber","download_url":"https://codeload.github.com/MSchreber/Webserver/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MSchreber%2FWebserver/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264958194,"owners_count":23689010,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["flask","html-css-javascript","mongodb","python","raspberry-pi-3","webserver"],"created_at":"2025-06-20T02:05:13.361Z","updated_at":"2026-04-14T06:03:43.951Z","avatar_url":"https://github.com/MSchreber.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Private Flask Webserver – Personal Infrastructure on Raspberry Pi\n\nThis repository documents a basic but steadily evolving Flask-based webserver infrastructure, running behind an Nginx reverse proxy on a Raspberry Pi. Initially created as a personal side project and learning environment, the server now integrates multiple components for private data management, home automation, and self-hosted services.\n\n\u003e Please note: This server is **not production-grade**. It was designed primarily for experimentation and private use.\n\n---\n\n## Overview\n\nThe server combines various features under a single modular architecture:\n\n- **Private document storage and access**\n- **Hashed file sharing** via 128-bit tokenized links\n- **SmartHome integration** with direct Philips Hue Bridge control\n- **Study tools** including a Pomodoro-style timer and flashcard system\n- **Inventory system** with item management, QR label printing and MongoDB backend\n- **Basic activity logging** and access event tracking\n\n---\n\n## Architecture\n\n- **Backend:** Python 3 / Flask (modular route system with login-protected endpoints)\n- **Frontend:** HTML templates with CSS and JS enhancements (minimal)\n- **Reverse Proxy:** Nginx with HTTPS (Let’s Encrypt certificates)\n- **Host Machine:** Raspberry Pi (Debian-based), additional PC for Windows-only label printer\n\n---\n\n## Key Features\n\n### 1. Document Management\n\n- Upload, view, and download files\n- Support for nested folders and file type restrictions\n- Access control via session login and optional public token links (128-bit hash URLs)\n\n### 2. SmartHome Control\n\n- Direct API access to Hue Bridge (no cloud dependency)\n- Light control and status monitoring via internal web dashboard\n\n### 3. Learning Tools\n\n- Flashcard system with custom decks and spaced repetition\n- Pomodoro-style timer with session statistics\n\n### 4. Inventory + Label Printing\n\n- Items stored in MongoDB with metadata (location, room, contents, timestamp)\n- Auto-generated QR codes upon creation\n- Label printed via API interface to Windows machine running Brother label printer\n\n---\n\n## Security Measures\n\n\u003e Still in early development – applied cautiously with room for improvement.\n\n- CSRF protection via Flask-WTF  \n- Password hashing with fail counter and lockout after multiple attempts  \n- HTTPS enforcement via Nginx and X.509 Let's Encrypt certificates  \n- Restricted upload types and extension checks  \n- Admin panel behind login\n\n---\n\n## Logging \u0026 Monitoring\n\n- Simple activity logging (logins, file accesses, failed attempts)\n- Plan to implement rate limiting and alert system for abnormal behavior\n\n---\n\n## Roadmap / Ideas\n\n- User role system (admin, read-only)\n- File versioning and expiration\n- Offline-first support with service workers\n- 2FA or hardware key integration\n- API keys for device-based automation\n\n---\n\n## Final Notes\n\nThis project grew out of first principles and personal tinkering – combining learning goals with tools I actually use daily. It’s far from perfect, but each part reflects a new layer of understanding and control over my digital environment.\n\nUse with care. Break things. Learn.\n\n---\n\n## Contact\n\n**Maximilian Schreber**  \nmax.schreber@tum.de  \n[github.com/MSchreber](https://github.com/MSchreber)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmschreber%2Fwebserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmschreber%2Fwebserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmschreber%2Fwebserver/lists"}