Bloggo - Medium Clone

Bloggo

A full-stack Node.js application built with Next.js, and Firebase made as a clone to Medium.

Package License Vercel

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

Top categories

Loading Svelte Themes