The Circle project - The circle is an application landscape containing 3 applications There's an Angular web app called TrueYou for streaming, an expressJS backend with a Node Media server and an Android app built with Java and Kotlin for streaming.

Overview

Setup

Clone the project:

git clone https://github.com/Pjiwm/circle-project/

Docker Setup

If you do not have Docker installed yet, but want to use the Docker setup:

If you Are on windows 10/11 Home:

  1. Install WSL: WSL installation guide
  2. Restart your computer, and run in powershell:
WSL -l 
  1. If you receive any errors troubleshoot.
  2. If Windows did not install a default distro (Ubuntu) Install one from the MS store: Ubuntu from MS store
  3. For a more comfortable working environment get Windows Terminal and set Ubuntu as your default CLI: Windows Terminal from MS store
  4. Install Docker: Docker
  5. Restart computer
  6. Open Docker-Desktop open settings and got to: Resources > WSL Integration Enable Ubuntu and press refresh
  7. Open Windows Terminal or Ubuntu and see if the docker command is working.

If you are on Linux, Mac or Windows 10/11 Pro:

  1. Install Docker
  2. Run Docker in a CLI to see if it works

When Docker is installed:

  1. navigate to the repo in a terminal or inside your IDE's CLI
  2. Copy and paste sample.env (to keep it on the repo) and rename it to .env
  3. run docker-compose build
  4. run docker-compose up

Using remote containers with VSCode

For an optimal dev environment use the Remote containers extensions.

  1. Open VSCode in this project
  2. Install Remote - Containers from Microsoft (ms-vscode-remote.remote-containers)
  3. Copy and paste sample.env (to keep it on the repo) and rename it to .env
  4. Open the command pallet ctrl + shift + p and run > Remote Containers: Open Folder in container..
  5. You should now be inside the container within VSCode.

Regular Setup

  1. Install Node 16: guide
  2. Install NX globally with npm install -g nx
  3. Copy and paste sample.env (to keep it on the repo) and rename it to .env
  4. Setup a local MariaDB server or any other MySQL server.
  5. Use a tool like Xamp or phpMyAdmin to manage your local databases.
  6. Install OpenSSL on Windows.

Useful NX commands

Remember, you can always use the NX console!

Angular Commands

Generating a component: npx nx g @nrwl/angular:component <name> --project frontend

Generating a service: npx nx g @nrwl/angular:service <name> --project frontend

Linting

To lint your code: npx nx lint --fix express-backend

Working environment

Managing the project in your editor/IDE

Open the project in your editor/IDE preferably VSCode due to extensions used for linting and the NX gui extension.

  • If you do not use VSCode make sure you can use ESLint linting and optionally an extension for NX. Otherwise you have to use the NX CLI. (If you use og Vim, Nano or Ed have fun 💀 )
  • If you use Docker with remote containers all extensions should be installed already.
  • If you are not using Docker but are using VSCode make sure to install the recommended extensions. Set prettier as your formatter, this will make sure you're not making any linting errors.

Project structure

This repository is an NX monorepo. This means different projects backend, frontend etc. are all in the same workspace area. in the apps directory the different projects can be found. The libs directory can be used to put resources in that will be reused over different apps. Running tests, building, serving, generating new components, linting etc. can all be done using NX commands. In VSCode simply navigate to the left. There should be a logo with the letters NX. Using this extension running any NX command will become fairly easy. For more information: NX setup

Contribution rules

Code conventions

  • Strict convention rules are not applied in any frontend Projects. Most components and boilerplate will be generated already.
  • No unused variables
  • Always make use of semicolons (;) at the end of a statement.
  • Use double quotes.
  • All functions must have a JSDoc comment.
   /**
    * I am a JSDoc, I describe the function below me.
    * This function calls someone SUS!
    * @param person - The person who's gonna be sus.
    */
  function amongUs(person: any): void {
    console.log(`${person} is sus`);
  }
  • No unused functions
  • When you use an ESLint Ignore statement add an explanation.

What happens when code is committed that does not follow the code conventions?

When code is committed that contains linting errors it will fail whilst running in the pipeline. Your pull request will fail and can therefor not be pr'd back to dev or main.

Git and Github rules

  • Do not push directly to Dev or Main.
  • Use Milestones for user stories.
  • Use an issue per problem you'll tackle.
  • Add corresponding Milestones (user stories) to your issue.
  • Add fitting labels to your issue (bugfix, new feature, documentation etc.)
  • For every new problem you'll solve you work on a different feature or bug-fix branch. (feature/stream-window, bug-fix/centered-div)
  • When done with a branch create a pull request with your pushed branch.
  • in the description write: Closes #Issue number of issue you've solved. This way Issues will automatically be closed after the pull request has been submitted.
  • Every pull request needs at least one code review.
  • Only use feature and bug-fix branches.
  • Do your code reviews seriously.
  • Do not review/submit pull requests that are still running CI tests.
  • Assign yourself and other people if necessary to the assignee's tab in a pull request.
  • Feel free to request reviewers in a pull request.
  • Make sure not to commit big chunks of changes, commit in small steps.

Working Lean

  • Make use of the github projects kanban board.
  • The boards can be found in this repo's projects tab > Projects (classic)
  • Always assign yourself first before working on any tasks.
  • Make sure to update the tasks status. (in progress, testing done)
  • WIP-Limits:
    • Kanban-backlog 10
    • under development 6
    • under test 4
    • done (waiting for acceptance by PO) 3
    • accepted by PO ∞
You might also like...

A social media platform aimed to capture the essence of all popular, existing social media platforms

A social media platform aimed to capture the essence of all popular, existing social media platforms

Social Fuel Reimagining Social Media, step by step 📌 About A social media platform aimed to capture the essence of all popular, existing social media

Feb 12, 2022

A monorepo containing both the $CODE token contract & the claim web app.

A monorepo containing both the $CODE token contract & the claim web app.

DeveloperDAO $CODE contract & claim site A monorepo containing both the $CODE token contract & the claim web app. Contents Related Development Prerequ

Jul 12, 2022

Very simple full-stack application using React, Java Spring Boot, and PostgreSQL

Very simple full-stack application using React, Java Spring Boot, and PostgreSQL. The API was built following the N-Tier architecture. The goal was to explore and learn more in-depth the development of APIs, the use of Docker and deploying with AWS.

Apr 23, 2022

A full stack mern application called "memories" where users can post interesting events occurring in their life

A full stack mern application called

Memories App đŸ’« đŸ’« đŸ’« Live Demo đŸ’« đŸ’« đŸ’« Full Stack "R"ERN Application - from start to finish. The App is called "Memories" and it is a simple social

Sep 24, 2022

âšĄïž Monorepository containing all the source code for the Foxxie Project

âšĄïž Monorepository containing all the source code for the Foxxie Project

âšĄïž Monorepository containing all the source code for the Foxxie Project

Jun 30, 2022

This is an application that entered the market with a mobile application in real life. We wrote the backend side with node.js and the mobile side with flutter.

HAUSE TAXI API Get Started Must be installed on your computer Git Node Firebase Database Config You should read this easy documentation Firebase-Fires

Nov 4, 2021

A concise collection of classes for PHP, Python, JavaScript and Ruby to calculate great circle distance, bearing, and destination from geographic coordinates

GreatCircle A set of three functions, useful in geographical calculations of different sorts. Available for PHP, Python, Javascript and Ruby. Live dem

Sep 30, 2022

An NODE Module For Getting Data From Discord API Called Discord Info

An NODE Module For Getting Data From Discord API Called Discord Info

An NODE Module For Getting Data From Discord API Called Discord Info

Jun 7, 2022
Owner
Pim
Software engineering student at Avans.
Pim
To-do-expressJS-api - An ExpressJS API, where you can create your own To-Do's

ExpressJS to-do API What is this API about? This is an API where you can do the following: Log in. Sign up. Create task Read Task Update Task Delete T

PĂ©rtile Franco Giuliano 1 Jan 3, 2022
This is a full-stack exercise tracker web application built using the MERN (MongoDB, ExpressJS, ReactJS, NodeJS) stack. You can easily track your exercises with this Full-Stack Web Application.

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

WMouton 2 Dec 25, 2021
DocuBox is a cloud file storing app built using Kotlin, Nodejs and MongoDb.

DocuBox is an app where you can securely upload your files on the cloud – from family pictures and audio recordings to spreadsheets, presentations and other confidential documents. All the files uploaded by the users are stored in an encrypted format.

Ishant Chauhan 10 Nov 18, 2022
An obsidian plugin that allows code blocks executed interactively in sandbox like jupyter notebooks. Supported language rust、kotlin、python、Javascript、TypeScript etc.

Obsidian Code Emitter This plugin allows code blocks executed interactively like jupyter notebooks. Currently, support languages: Rust Kotlin JavaScri

YiiSh 38 Dec 28, 2022
Source code of kotlin course (UK, RU) for beginners.

Kotlin Course Kotlin course for beginners (UK, RU). Site available at course.y9vad9.com. News & Updates If you want to receive updates and news about

Vadim Yaroschuk 15 Jan 6, 2023
Projeto desenvolvido em Angular e Material, para conclusĂŁo do curso de extensĂŁo em Java

EmpresaFront This project was generated with Angular CLI version 13.0.4. Development server Run ng serve for a dev server. Navigate to http://localhos

Carolina Rodrigues 5 Mar 18, 2022
Simple auth application with ExpressJS.

NodeJS JWT Authentication sample This is a NodeJS API that supports username and password authentication with JWTs. Available APIs User APIs POST /reg

Yacine Maouche 3 Nov 2, 2022
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till mÀnniskor pÄ flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023