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.
- 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.
- Supports for
Python 3.9
and higher. - Dependencies managed. See configuration in
requirements.txt
. - Code linted with
pylint
- Automatic codestyle with
black
,isort
andpyupgrade
. - 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
.
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.
- 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
- MongoDB:
WARNING: before connecting to the databases instances, make sure the GCP VM instances are up and running.
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.
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 |
This project is licensed under the terms of the MIT
license.