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ο
Supports for
Python 3.9
and higher.Dependencies managed. See configuration in
requirements.txt
.Code linted with
pylint
Ready-to-use
pre-commit
hooks with code-formatting.Type checks with
mypy
; docstring checks withdarglint
; security checks withsafety
andbandit
Testing with
pytest
.Pydantic
β data validation and settings management using Python type hinting.FastAPI
is a type-driven asynchronous web framework.Ready-to-use
.devcontainer
, and.gitignore
.
Deployment featuresο
GitHub
integration: issue and pr templates.Github Actions
with predefined build workflowTerraform 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 :
Download MongoDB Compass and install it locally,
Download Neo4j Desktop and install it locally.
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 |
---|---|
|
π Features |
|
π§ Fixes & Refactoring |
|
π¦ Build System & CI/CD |
|
π₯ Breaking Changes |
|
π Documentation |
|
β¬οΈ Dependencies updates |
π‘ Licenseο
This project is licensed under the terms of the MIT
license.