{"id":16863606,"url":"https://github.com/vbrazo/blog_api","last_synced_at":"2026-05-17T21:01:32.260Z","repository":{"id":52562500,"uuid":"361546924","full_name":"vbrazo/blog_api","owner":"vbrazo","description":"A fully-fledged backend Blog API with Phoenix","archived":false,"fork":false,"pushed_at":"2021-10-22T19:10:09.000Z","size":328,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-24T20:30:06.791Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Elixir","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/vbrazo.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}},"created_at":"2021-04-25T21:52:57.000Z","updated_at":"2023-03-30T01:23:53.000Z","dependencies_parsed_at":"2022-08-29T19:30:19.133Z","dependency_job_id":null,"html_url":"https://github.com/vbrazo/blog_api","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vbrazo%2Fblog_api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vbrazo%2Fblog_api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vbrazo%2Fblog_api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vbrazo%2Fblog_api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vbrazo","download_url":"https://codeload.github.com/vbrazo/blog_api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244261237,"owners_count":20424910,"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":[],"created_at":"2024-10-13T14:39:07.687Z","updated_at":"2026-05-17T21:01:27.223Z","avatar_url":"https://github.com/vbrazo.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Blog API in Phoenix\n\nThis codebase was created to demonstrate a fully fledged backend API with **Elixir and Phoenix** including CRUD operations, authentication, routing, pagination, and more.\n\nWe've gone to great lengths to adhere to the **[credo](https://github.com/rrrene/credo)** community style guides \u0026 best practices.\n\n- [Blog API in Phoenix](#blog-api-in-phoenix)\n  - [Installation](#installation)\n  - [Database schema](#database-schema)\n  - [API Endpoints](#api-endpoints)\n  - [Tests](#tests)\n  - [Documentation](#documentation)\n  - [Style guide](#style-guide)\n  - [Licensing](#licensing)\n\n## Installation\n\nTo run this project, you will need to install the following dependencies on your system:\n\n* [Elixir](https://elixir-lang.org/install.html)\n* [Phoenix](https://hexdocs.pm/phoenix/installation.html)\n* [PostgreSQL](https://www.postgresql.org/download/macosx/)\n\nTo get started, run the following commands in your project folder:\n\n| Command                                       | Description                                  |\n|-----------------------------------------------|----------------------------------------------|\n| `cp config/dev.exs.example config/dev.exs`    | creates the project's configuration file     |\n| `mix deps.get`                                | installs the dependencies                    |\n| `mix ecto.create`                             | creates the database                         |\n| `mix ecto.migrate`                            | run the database migrations                  |\n| `mix phx.server`                              | run the application                          |\n\nThis is a backend project, you won't be able to go to `localhost:4000` and see a Frontend application. You can test the API endpoint using Postman or Insomnia.\n\n## Database schema\n\n\u003cimg src=\"https://github.com/vbrazo/blog_api/blob/master/docs/database.png\" width=600 /\u003e\n\n## API Endpoints\n\n| Route                         | Controller               | Action       | HTTP method  |\n|-------------------------------|--------------------------|--------------|--------------|\n| `/articles/feed`              | ArticleController        | feed         | GET          |\n| `/articles`                   | ArticleController        | index        | GET          |\n| `/articles/:id`               | ArticleController        | show         | GET          |\n| `/articles`                   | ArticleController        | create       | POST         |\n| `/articles/:id`               | ArticleController        | put/patch    | PUT/PATCH    |\n| `/articles/:id`               | ArticleController        | delete       | DELETE       |\n| `/articles/:slug/favorite`    | ArticleController        | favorite     | POST         |\n| `/articles/:slug/favorite`    | ArticleController        | unfavorite   | DELETE       |\n| `/comments`                   | CommentController        | index        | GET          |\n| `/comments/:id`               | CommentController        | show         | GET          |\n| `/comments`                   | CommentController        | create       | POST         |\n| `/comments/:id`               | CommentController        | put/patch    | PUT/PATCH    |\n| `/comments/:id`               | CommentController        | delete       | DELETE       |\n| `/tags`                       | TagController            | index        | GET          |\n| `/user`                       | UserController           | current_user | GET          |\n| `/user`                       | UserController           | update       | PUT          |\n| `/users`                      | UserController           | create       | POST         |\n| `/users/login`                | SessionController        | create       | POST         |\n| `/profiles/:username`         | ProfileController        | show         | GET          |\n| `/profiles/:username/follow`  | ProfileController        | follow       | POST         |\n| `/profiles/:username/follow`  | ProfileController        | unfollow     | DELETE       |\n\n## Tests\n\nTo run the tests for this project, simply run in your terminal:\n\n```shell\nmix test\n```\n\n## Documentation\n\nTo generate the documentation, your can run in your terminal:\n\n```shell\nmix docs\n```\n\nThis will generate a `doc/` directory with a documentation in HTML. To view the documentation, open the `index.html` file in the generated directory.\n\n## Style guide\n\nThis project uses [mix format](https://hexdocs.pm/mix/master/Mix.Tasks.Format.html). You can find the configuration file for the formatter in the `.formatter.exs` file.\n\n## Licensing\n\nMIT © Vitor Oliveira\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvbrazo%2Fblog_api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvbrazo%2Fblog_api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvbrazo%2Fblog_api/lists"}