bloggo

Medium like portal for creating and distributing blogs

MIT License

Stars
1

Table of Contents:

  1. Description
  2. Prerequisites
  3. Deployment
  4. Environment Configuration
  5. Testing

🔎 This repo was created with Nx.

📚 Description

This 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.


🛠️ Prerequisites

Non Docker

  • Please make sure to have Node.js (16+) locally by downloading the Javascript runtime via brew, choco, or apt-get.

  • Please make sure to have Firebase configured either locally or onboarded on GCP cloud by following this guide.

Docker 🐳

  • Please make sure to have Docker Desktop operational to quickly compose the required dependencies. Then follow the docker procedure outlined below.

🚀 Deployment

Manual Deployment without Docker

  • Clone the repo via git clone https://github.com/msanvarov/bloggo.

  • Download dependencies via npm i or yarn.

  • Reconfigure Firebase with the Firebase CLI via firebase init.

  • 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.

  • Start the api in development mode by using npm run start (the ui will be exposed on http://localhost:4200).

Deploying with Docker 🐳

  • Execute the following command in-app directory:
# creates and loads the docker container in detached mode with the required configuration
$ docker-compose up -d
  • The following command will download dependencies and execute the web application on http://localhost:80 (deployed behind a Nginx reverse proxy).

🔒 Environment Configuration

By default, the application comes with a config module that can read in every environment variable from the .env file.

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.

FIREBASE_* - the firebase config details that can be fetched when creating the SDK for the app.


✅ Testing

Docker 🐳

# Start the docker container if it's not running
$ docker start bloggo

# unit tests
$ docker exec -it bloggo npm run test

# test api against postman collection
$ docker exec -it bloggo npm run test:postman

Non-Docker

# execute test
$ npm run test


🏗️ Progress

Branches Status
main
feat/* 🚧

👥 Help

PRs are appreciated, I fully rely on the passion ❤️ of the OS developers.


License

This starter API is MIT licensed.

Author