Dependencies Status Code style: black Pre-commit Semantic Versions License Coverage Report

Team members forthebadge forthebadge forthebadge forthebadge forthebadge forthebadge forthebadge forthebadge forthebadge forthebadge Made with forthebadge forthebadge forthebadge forthebadge forthebadge

Awesome Gocod, where your passion for technology and your development expertise will be put to the test.

Gocod is a solution designed to help developers in general to be more productive in their projects. This is achieved by exploiting knowledge bases in particular:

  • Templates and project structures to get you started quickly

  • Rich and exploitable error databases

This project simulated the challenges of a real working environment, where we had the opportunity to work on NoSQL databases and deploy a complete application on the GCP Cloud.

Work plan and deliverables

  • Sprint 1 : Project Initiation, Templates, and User Management

    • Complete CRUD functions in the back-end.

    • Implementation of MongoDB-based functionalities.

    • Deliverables: Source code updated on GitHub, activity reports.

  • Sprint 2 : Dynamic forms and templates recommendations

    • Development of dynamic form questions based on the Neo4j database.

    • Integration of the template recommendation system.

    • Deliverables: Source code updated on GitHub, activity reports.

  • Sprint 3 : Database and Application deployment

    • Configuring a Compute Engine instance for MongoDB.

    • Deployment of the FastAPI API and the front-end on Cloud Run.

    • Deliverables: Deployed cloud architecture, technical documentation, live demonstration.

πŸš€ Features

Development features

Deployment features

  • GitHub integration: issue and pr templates.

  • Github Actions with predefined build workflow

  • Terraform for managing and provisioning cloud infrastructure.

  • Ansible to make deployment and maintenance easier.

  • Automatic drafts of new releases with Release Drafter. Attention paid to Semantic Versions specification.

More specifically, our GCP infrastructure consists of:

  • A google_compute_firewall: to define rules that allow or deny traffic to and from our virtual machine instances in a Google Compute Engine network,

  • 02 google_compute_instances for MongoDB,

  • 02 google_compute_instances for Neo4J DB,

  • A google_compute_disk (external storage) for each of our VMs : which is a persistent disk resource in Google Cloud making us able to persist data beyond the life of an instance (unlike ephemeral storage which is deleted when an instance is terminated),

  • A google_compute_attached_disk to attach each compute disk to the dedicated compute instance.

How to access to our work ?

  • First, make sure you have the latest version of our project:

git clone https://github.com/nosql-esigelec/sprint-1-lt2a
  • Then have to ask access to the Mongo and Neo4j databases to the team members by mailing eliseetegue@gmail.com for example.

  • Once you have been granted access, you’ll probably want to see databases data. To do that, you have to :

  • Create new remote connection in MongoDB Compass and Neo4j Desktop using those URIs and the credentials given by this project team members ONLY

    • MongoDB: mongodb://<your_username>:<your_password>@34.76.255.124:27017/?retryWrites=true&w=majority

    • Neo4j : bolt://35.205.122.100:7687

WARNING: before connecting to the databases instances, make sure the GCP VM instances are up and running.

πŸ“ˆ Releases

You can see the list of available releases on the GitHub Releases page.

We follow Semantic Versions specification.

We use Release Drafter. As pull requests are merged, a draft release is kept up-to-date listing the changes, ready to publish when you’re ready. With the categories option, you can categorize pull requests in release notes using labels.

List of labels and corresponding titles

Label

Title in Releases

enhancement, feature

πŸš€ Features

bug, refactoring, bugfix, fix

πŸ”§ Fixes & Refactoring

build, ci, testing

πŸ“¦ Build System & CI/CD

breaking

πŸ’₯ Breaking Changes

documentation

πŸ“ Documentation

dependencies

⬆️ Dependencies updates

πŸ›‘ License

License

This project is licensed under the terms of the MIT license.