{"id":19234555,"url":"https://github.com/smitelli/windowbox","last_synced_at":"2026-01-12T06:24:08.602Z","repository":{"id":7126723,"uuid":"8422029","full_name":"smitelli/windowbox","owner":"smitelli","description":"Because moblogs aren't hip anymore.","archived":false,"fork":false,"pushed_at":"2024-07-30T19:55:32.000Z","size":822,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-21T05:41:33.661Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/smitelli.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}},"created_at":"2013-02-26T01:00:38.000Z","updated_at":"2024-07-30T19:55:33.000Z","dependencies_parsed_at":"2023-01-11T20:10:17.996Z","dependency_job_id":"4ded7906-ac2c-4c1d-a559-d91ac11c0933","html_url":"https://github.com/smitelli/windowbox","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/smitelli/windowbox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smitelli%2Fwindowbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smitelli%2Fwindowbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smitelli%2Fwindowbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smitelli%2Fwindowbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smitelli","download_url":"https://codeload.github.com/smitelli/windowbox/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smitelli%2Fwindowbox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28336316,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T06:09:07.588Z","status":"ssl_error","status_checked_at":"2026-01-12T06:05:18.301Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2024-11-09T16:14:16.920Z","updated_at":"2026-01-12T06:24:08.568Z","avatar_url":"https://github.com/smitelli.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Windowbox\n=========\n\nDon't call it a moblog / I've posted for years.\n\nby [Scott Smitelli](mailto:scott@smitelli.com)\n\nRunning in Development\n----------------------\n\nWindowbox is developed and tested in a [Vagrant](https://www.vagrantup.com/) environment. Assuming you have all the prerequisites (Vagrant and VirtualBox) installed, setup should be as simple as:\n\n    cd /path/to/repo\n    vagrant up\n    vagrant ssh\n\nOnce inside the VM, everything should be installed and ready for use. The quickest way to get something running is:\n\n    flask create\n    flask insert 10\n    flask run\n\nAssuming everything worked correctly, the app will be accessible on the host at [http://localhost:5000](http://localhost:5000/).\n\nUsing the Development VM\n------------------------\n\nAll commands should be run with the current working directory set to `/vagrant` -- any deviation from this may result in the `flask` script failing to locate the project directory.\n\nThe following shell commands are commonly used:\n\n- `flask create`: Create the development database and all tables within it. This command **must** be run before starting the app or any of its scrupts for the first time.\n- `flask drop`: Drop the app tables from the database and delete the Attachment/Derivative files from the storage path.\n- `flask insert [count]`: Generate _count_ Posts, each with an Attachment, and add it to the app. If `count` is omitted, it defaults to `1`.\n- `flask lint`: Run the flake8 style checker against the Python codebase.\n- `flask run`: Run the app. It will listen on port 5000, accessible on the host at [http://localhost:5000](http://localhost:5000/). The app will auto-reload if changes to the source code are detected. To stop it, hit Ctrl+C.\n- `flask shell`: Start an interactive REPL shell with an appropriate environment for app development. Noteworthy globals include `app` and `g`, which can be used immediately without importing anything.\n- `flask test`: Run the unit test suite and display the code coverage report. Any options supported by pytest (like `-v` or `-k some_module`) can be provided and will be passed to the underlying test runner.\n\nLocal storage is in `/var/opt/windowbox`. This is where the dev/test SQLite database files, the virtualenv, and the Attachment/Derivative storage data are all located.\n\nTODOs\n-----\n\n- prod docs, `WINDOWBOX_CONFIG=configs/dev.py windowbox-fetch`\n- `flask assets clean; flask assets build`\n- setup.py: url, project_urls, add non-*.py files to manifest\n- spellcheck/cap/indent style\n- cache headers: etag, last-modified, cache-control?, expires?\n- document REST API schema and unit test its shape\n- split up overloaded tests\n- sender.email_address needs to be utf8mb4_unicode_520_ci on mysql; how to do that?\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmitelli%2Fwindowbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmitelli%2Fwindowbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmitelli%2Fwindowbox/lists"}