{"id":16368641,"url":"https://github.com/msanvarov/bloggo","last_synced_at":"2026-02-07T20:31:17.182Z","repository":{"id":191672845,"uuid":"448124621","full_name":"msanvarov/bloggo","owner":"msanvarov","description":"Medium like portal for creating and distributing blogs","archived":false,"fork":false,"pushed_at":"2023-12-25T07:35:45.000Z","size":5100,"stargazers_count":2,"open_issues_count":12,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-31T11:31:36.917Z","etag":null,"topics":["devto","firebase","medium","nextjs","nx","react","tailwind","typescript","vercel"],"latest_commit_sha":null,"homepage":"https://bloggo-msanvarov.vercel.app/","language":"TypeScript","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/msanvarov.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}},"created_at":"2022-01-14T22:31:19.000Z","updated_at":"2025-06-26T01:29:26.000Z","dependencies_parsed_at":"2023-12-25T08:31:53.268Z","dependency_job_id":"758b7281-e884-4ebf-8828-4dc271f1b8a0","html_url":"https://github.com/msanvarov/bloggo","commit_stats":null,"previous_names":["msanvarov/bloggo"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/msanvarov/bloggo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msanvarov%2Fbloggo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msanvarov%2Fbloggo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msanvarov%2Fbloggo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msanvarov%2Fbloggo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/msanvarov","download_url":"https://codeload.github.com/msanvarov/bloggo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msanvarov%2Fbloggo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29208161,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T20:13:33.422Z","status":"ssl_error","status_checked_at":"2026-02-07T20:13:31.455Z","response_time":63,"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":["devto","firebase","medium","nextjs","nx","react","tailwind","typescript","vercel"],"created_at":"2024-10-11T02:53:21.213Z","updated_at":"2026-02-07T20:31:17.168Z","avatar_url":"https://github.com/msanvarov.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eBloggo - Medium Clone\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://nextjs.org/\" target=\"blank\"\u003e\u003cimg src=\"assets/bloggo.png\" width=\"600\" alt=\"Bloggo\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\nA full-stack \u003ca href=\"https://nodejs.org\" target=\"blank\"\u003eNode.js\u003c/a\u003e application built with \u003ca href=\"https://nextjs.org\" target=\"blank\"\u003eNext.js\u003c/a\u003e, and \u003ca href=\"https://firebase.google.com\" target=\"blank\"\u003eFirebase\u003c/a\u003e made as a clone to \u003ca href=\"https://medium.com/\" target=\"blank\"\u003eMedium\u003c/a\u003e.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://github.com/msanvarov/bloggo/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-green\" alt=\"Package License\" /\u003e\u003c/a\u003e\n\t\u003ca href=\"https://vercel.com/msanvarov/bloggo/\"\u003e\u003cimg src=\"https://therealsujitk-vercel-badge.vercel.app/?app=bloggo\" alt=\"Vercel\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nTable of Contents:\n\n1. [Description](#-description)\n2. [Prerequisites](#%EF%B8%8F-prerequisites)\n3. [Deployment](#-deployment)\n4. [Environment Configuration](#-environment-configuration)\n5. [Testing](#-testing)\n\n🔎 This repo was created with [Nx](https://nx.dev/).\n\n### 📚 Description\n\nThis application was built to mimic the functionalities of the Medium blogging website but with Firebase as the api. Deployed with authentication/authorization, logging, crud features and database persistence out of the box.\n\n---\n\n### 🛠️ Prerequisites\n\n#### Non Docker\n\n- Please make sure to have [Node.js](https://nodejs.org/en/download/) (16+) locally by downloading the Javascript runtime via `brew`, `choco`, or `apt-get`.\n\n- Please make sure to have Firebase configured either locally or onboarded on GCP cloud by following this [guide](https://medium.com/codex/learn-the-basics-and-get-started-with-firebase-an-app-development-platform-backed-by-google-6c27b3be1004).\n\n#### Docker 🐳\n\n- Please make sure to have [Docker Desktop](https://www.docker.com/products/docker-desktop/) operational to quickly compose the required dependencies. Then follow the docker procedure outlined below.\n\n---\n\n### 🚀 Deployment\n\n#### Manual Deployment without Docker\n\n- Clone the repo via `git clone https://github.com/msanvarov/bloggo`.\n\n- Download dependencies via `npm i` or `yarn`.\n\n- Reconfigure Firebase with the Firebase CLI via `firebase init`.\n\n- Create a **.env file** via the `cp apps/bloggo/.env.example apps/bloggo/.env` command and replace the existing environment variable placeholders with valid responses.\n\n- Start the api in development mode by using `npm run start` (the **ui** will be exposed on http://localhost:4200).\n\n#### Deploying with Docker 🐳\n\n- Execute the following command in-app directory:\n\n```bash\n# creates and loads the docker container in detached mode with the required configuration\n$ docker-compose up -d\n```\n\n- The following command will download dependencies and execute the web application on http://localhost:80 (deployed behind a Nginx reverse proxy).\n\n---\n\n### 🔒 Environment Configuration\n\nBy default, the application comes with a config module that can read in every environment variable from the `.env` file.\n\n**APP_ENV** - the application environment to execute as, either in development or production. Determines the type of logging options to utilize. Options: `development` or `production`.\n\n**FIREBASE_***  - the firebase config details that can be fetched when creating the  [SDK for the app](https://firebase.google.com/docs/web/setup).\n\n---\n\n### ✅ Testing\n\n#### Docker 🐳\n\n```bash\n# Start the docker container if it's not running\n$ docker start bloggo\n\n# unit tests\n$ docker exec -it bloggo npm run test\n\n# test api against postman collection\n$ docker exec -it bloggo npm run test:postman\n\n```\n\n#### Non-Docker\n\n```bash\n# execute test\n$ npm run test\n\n```\n\n---\n\n### 🏗️ Progress\n\n|                                                Branches | Status |\n| ------------------------------------------------------: | :----- |\n|             [main](https://github.com/msanvarov/bloggo) | ✅     |\n| [feat/\\*](https://github.com/msanvarov/bloggo/branches) | 🚧     |\n\n---\n\n### 👥 Help\n\nPRs are appreciated, I fully rely on the passion ❤️ of the OS developers.\n\n---\n\n## License\n\nThis starter API is [MIT licensed](LICENSE).\n\n[Author](https://sal-anvarov.com/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsanvarov%2Fbloggo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmsanvarov%2Fbloggo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsanvarov%2Fbloggo/lists"}