Code Monkey home page Code Monkey logo

udacity-capstone's Introduction

Udacity Cloud Developer Capstone project

This is the final project of the course Cloud Developer from Udacity.

It's built with a distributed microservice architecture separated into a number of services:

  • api - a Spring Boot backend api exposing rest and websocket endpoints.
  • client - the frontend client featuring an Angular Single Page Application.
  • RabbitMQ - message broker used to send p2p chat messages, distributing user online statuses, and pinging other users.
  • PostgreSQL - RDMS for persisting user information and chat messages.
  • reverseproxy - an NGINX web server which acts like a reverse proxy, routing requests to the relevant service.

It is published on https://bjorkcapstone.codespirit.se/ and is hosted in AWS EKS (Elastic Kubernetes Service.

The Docker images are published at https://hub.docker.com/u/patrikb.

For user signup, authentication and authorization Auth0 is used. Auth0 libraries are used both in the client and the api.

The application has a number of features, such as:

  • Signup
  • Logging in/out
  • See own profile information
  • List other users.
  • See which users are online.
  • Request to chat with a user.
  • The other user will get a notice that another user wants to chat.
  • The users can then chat with each other.

Prerequisites

  • Java 11+ (optional)
  • Maven (optional)
  • Node
  • NPM
  • Angular CLI
  • Docker

Building

From the root of the project execute:

./build-all.sh

Optionally, if Java and Maven isn't install the project can be built with:

./build-all-less-pre-requisites.sh

Running with docker-compose

From the root of the project execute:

./run-docker-compose.sh

Then browse to http://localhost:4200

Deploy to Kubernetes

Execute:

kubectl apply -f k8-yaml/

CI/CD - Github workflows

As code is pushed into the repository one or more workflows are triggered. See .github/workflows. The workflows build and test the services, builds Docker images which are pushed to Dockerhub, and last deployed to Kubernetes.

Logging

E.g. the application logs are logged to AWS CloudWatch via FluentD. See https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-setup-logs.html for the setup instructions that have been followed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.