Skip to content

NickLech/tellMe

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

420 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TellMe

Objectives

TellMe is an app that facilitates communication between citizens and public administrations. It allows the Municipality to publish surveys and generates useful reports for monitoring the territory. Users can participate in municipal surveys and questionnaires proposed by public and private entities, with incentives in the form of prizes.

Development

Prerequisites

  • node.js version 20.0.0 or higher
  • npm version 9.0.0 or higher

Server

Install the dependencies:

cd server
npm install

Run the server in development mode:

npm run dev

Build the server:

npm run build

Run the server in production mode:

npm start

Client

Install the dependencies:

cd client
npm install

Run the client in development mode:

npm run dev

Build the client:

npm run build

Run the client in production mode:

npm run preview

Apiary documentation

The API documentation is available at the following link: Apiary. You can view the API documentation and test the endpoints directly from the Apiary interface.

Deployment

Stage 1: infrastructure setup

  1. Obtain a DigitalOcean access token and save it in a file named do_token in ./infrastructure/terraform/do_token. Necessary permissions:
    • kubernetes:write
    • kubernetes:read
  2. Initialize Terraform:
    cd infrastructure/terraform
    terraform init
  3. Apply the Terraform configuration to create the infrastructure:
    terraform apply
    This will create a Kubernetes cluster and other necessary resources.

Stage 2: build and push Docker images

For the client:

cd ./client
./scripts/build.sh

For the server:

cd ./server
./scripts/build.sh

Stage 3: deploy to Kubernetes

Requirements:

  • kubectl installed and configured to access the Kubernetes cluster created in Stage 1.

Apply the Kubernetes manifests to deploy the application:

cd ./infrastructure/kubernetes
kubectl apply -f .
kubectl apply -f ./server
kubectl apply -f ./client

Stage 4: DNS configuration

Create 2 DNS records:

Type Name Value
A tellme.wetambara.com IP of the load balancer
A tellme.backend.wetambara.com IP of the load balancer

Now the frontend should be accessible at https://tellme.wetambara.com and the backend at https://tellme.backend.wetambara.com.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 54.2%
  • Vue 35.4%
  • API Blueprint 8.6%
  • CSS 0.5%
  • Dockerfile 0.5%
  • HCL 0.3%
  • Other 0.5%