{"id":14065454,"url":"https://github.com/miguelgrinberg/microblog-api","last_synced_at":"2025-04-05T10:09:34.248Z","repository":{"id":37715206,"uuid":"431883151","full_name":"miguelgrinberg/microblog-api","owner":"miguelgrinberg","description":"A modern (as of 2023) Flask API back end.","archived":false,"fork":false,"pushed_at":"2024-04-27T23:30:52.000Z","size":123,"stargazers_count":353,"open_issues_count":7,"forks_count":96,"subscribers_count":15,"default_branch":"main","last_synced_at":"2024-05-22T11:31:24.598Z","etag":null,"topics":["api","flask","openapi"],"latest_commit_sha":null,"homepage":"","language":"Python","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/miguelgrinberg.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},"funding":{"github":"miguelgrinberg","patreon":"miguelgrinberg","custom":"https://paypal.me/miguelgrinberg"}},"created_at":"2021-11-25T14:56:14.000Z","updated_at":"2024-05-20T00:17:31.000Z","dependencies_parsed_at":"2022-07-08T01:35:18.286Z","dependency_job_id":"69753949-3481-41cf-b270-361d21ea63c5","html_url":"https://github.com/miguelgrinberg/microblog-api","commit_stats":{"total_commits":71,"total_committers":4,"mean_commits":17.75,"dds":0.04225352112676062,"last_synced_commit":"ed1cd1c5dedbea6264a8857db68e4e79d3bccbad"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miguelgrinberg%2Fmicroblog-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miguelgrinberg%2Fmicroblog-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miguelgrinberg%2Fmicroblog-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miguelgrinberg%2Fmicroblog-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/miguelgrinberg","download_url":"https://codeload.github.com/miguelgrinberg/microblog-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247289409,"owners_count":20914464,"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":["api","flask","openapi"],"created_at":"2024-08-13T07:04:30.035Z","updated_at":"2025-04-05T10:09:34.207Z","avatar_url":"https://github.com/miguelgrinberg.png","language":"Python","funding_links":["https://github.com/sponsors/miguelgrinberg","https://patreon.com/miguelgrinberg","https://paypal.me/miguelgrinberg"],"categories":["Python"],"sub_categories":[],"readme":"# microblog-api\n\n[![Build status](https://github.com/miguelgrinberg/microblog-api/workflows/build/badge.svg)](https://github.com/miguelgrinberg/microblog-api/actions) [![codecov](https://codecov.io/gh/miguelgrinberg/microblog-api/branch/main/graph/badge.svg)](https://codecov.io/gh/miguelgrinberg/microblog-api)\n\nA modern (as of 2024) Flask API back end.\n\n## Deploy to Heroku\n\nClick the button below to deploy the application directly to your Heroku\naccount.\n\n[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/miguelgrinberg/microblog-api/tree/heroku)\n\n## Deploy on your Computer\n\n### Setup\n\nFollow these steps if you want to run this application on your computer, either\nin a Docker container or as a standalone Python application.\n\n```bash\ngit clone https://github.com/miguelgrinberg/microblog-api\ncd microblog-api\ncp .env.example .env\n```\n\nOpen the new `.env` file and enter values for the configuration variables.\n\n### Run with Docker\n\nTo start:\n\n```bash\ndocker-compose up -d\n```\n\nThe application runs on port 5000 on your Docker host. You can access the API\ndocumentation on the `/docs` URL (i.e. `http://localhost:5000/docs` if you are\nrunning Docker locally).\n\nTo populate the database with some randomly generated data:\n\n```bash\ndocker-compose run --rm microblog-api bash -c \"flask fake users 10 \u0026\u0026 flask fake posts 100\"\n```\n\nTo stop the application:\n\n```bash\ndocker-compose down\n```\n\n### Run locally\n\nSet up a Python 3 virtualenv and install the dependencies on it:\n\n```bash\npython3 -m venv venv\nsource venv/bin/activate\npip install -r requirements.txt\n```\n\nCreate the database and populate it with some randomly generated data:\n\n```bash\nalembic upgrade head\nflask fake users 10\nflask fake posts 100\n```\n\nRun the application with the Flask development web server:\n\n```bash\nflask run\n```\n\nThe application runs on `localhost:5000`. You can access the API documentation\nat `http://localhost:5000/docs`.\n\n## Troubleshooting\n\nOn macOS Monterey and newer, Apple decided to use port 5000 for its AirPlay\nservice, which means that the Microblog API server will not be able to run on\nthis port. There are two possible ways to solve this problem:\n\n1. Disable the AirPlay Receiver service. To do this, open the System\nPreferences, go to \"Sharing\" and uncheck \"AirPlay Receiver\".\n2. Move Microblog API to another port:\n    - If you are running Microblog API with Docker, add a\n    `MICROBLOG_API_PORT=4000` line to your *.env* file. Change the 4000 to your\n    desired port number.\n    - If you are running Microblog API with Python, start the server with the\n    command `flask run --port=4000`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiguelgrinberg%2Fmicroblog-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmiguelgrinberg%2Fmicroblog-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiguelgrinberg%2Fmicroblog-api/lists"}