Camerdevs, is dev cameroonian developer platform.

camerdevs

Camerdevs, is dev cameroonian developer platform.

Features

The platform includes the functionnalities bellow:

  • A Catalogue cameroonian developers
  • Their availabilies
  • The developers salaries broken down by companies
  • And later some job offers

Development

Dependencies

To run locally, this api require few dependencies

  • Golang version 1.16 or later
  • GNU make
  • docker with docker-compose

How to run

Once you have installed the required depencies, you can now run the application following the patterns bellow

Run

make run

Build and run

make run && ./camerdevs

Build and run with docker

make docker-build && make docker-run

Owner
OSS Cameroon
Open source society driven by Cameroonian developers.
OSS Cameroon
Comments
  • feat: adding a thousand separator on salaries

    feat: adding a thousand separator on salaries

    This pull request is for adding thousand separator on salaries like mentioned in issue #107

    Why ? To make salaries more readable.

    How ? Just by separating thousands by a comma.

    Steps to verify: Just by checking the screenshots below : image image

  • Update description on the home screen

    Update description on the home screen

    ...But here is what you need to know:

    • The company name is only displayed if at least 3 people in the same company with the same job title contribute. Until then, a generic description like "A local company" will be displayed.
    • The comment is only displayed if at least 3 people in the same company with the same job title contribute.
    • The rating is only displayed if at least 3 people in the same company with the same job title contribute.
  • We should not return ratings that are hidden when filters are applied to the `jobtitles` and `companies`

    We should not return ratings that are hidden when filters are applied to the `jobtitles` and `companies`

    We hide companies and jobtitles for ratings that had less than 5 entries on #189 . But it seems that we still return hidden ratings when doing request with filters.

    curl -X GET https://api.jobsika.stage.osscameroon.com/ratings?page=1&limit=10&company=something&jobtitle=something

    Will return a list a ratings corresponding to the hidden filters

  • feat(backend): set job title and city as mandatory fields for the rating POST request

    feat(backend): set job title and city as mandatory fields for the rating POST request

    This pull request set Jobtitles and City as Mandatory fields for the rating POST request. Related to #202

    Steps to verify:

    • move to the backend folder with cd ./backend
    • run make start-postgres to run an initialized database
    • run make run to launch the api
    • then run the following commands

    1️⃣ Check JobTitle

    curl -s -X POST 'http://localhost:7000/ratings' -H 'Content-Type: application/json' -d '{"city": "Douala","comment": "my comment","company_name": "OssCameroun","job_title": "","rating": 2,"salary": 1200,"seniority": "CV"}'
    

    you should see something like this 👇

    {"error":"job title is mandatory"}
    

    2️⃣ Check City

    curl -s -X POST 'http://localhost:7000/ratings' -H 'Content-Type: application/json' -d '{"city": "","comment": "my comment","company_name": "OssCameroun","job_title": "Maintainer","rating": 2,"salary": 1200,"seniority": "CV"}'
    

    you should see something like this 👇

    {"error":"city is mandatory"}
    
  • Add default values to the get companies and endpoint

    Add default values to the get companies and endpoint

    This pull request set default values for the GET /companies endpoint

    Steps to verify:

    • move to the backend folder with cd ./backend
    • run make start-api to start the api
    • then run the command curl -X GET localhost:7000/companies | jq you should see something like this
    {
      "hits": [{
        "id": 102,
        "name": "ADC",
        "rating": 0,
        "createdat": "2022-04-06T00:00:00Z",
        "updatedat": "2022-04-06T00:00:00Z"
      },
      {
        "id": 103,
        "name": "ADER",
        "rating": 0,
        "createdat": "2022-04-06T00:00:00Z",
        "updatedat": "2022-04-06T00:00:00Z"
      },
      ...
      ],
      "limit": 20,
      "nbHits": 1000,
      "offset": 40
    }
    
  • Refacto and Manage the Auto complation

    Refacto and Manage the Auto complation

    This pull request does...

    Why ? it manage the auto completion to help user when adding news ratings

    How ? while user type value he becomes suggestion on Company names, cities and job title

    ** Screenshots (optional)

    https://user-images.githubusercontent.com/49993443/156038971-68d1ea0e-cce7-44c3-ac51-c9642552ab83.mp4

  • Implement ratings post request

    Implement ratings post request

    This pull request implement the POST ratings endpoint, that creates a new rating entry

    Steps to verify:

    • move to the backend folder with cd ./backend
    • run make start-postrges to run an initialized database
    • run make run to launch the api
    • then run the command
    curl -s -X POST "http://localhost:7000/ratings" -d'{"company_name":"La Mater", "salary": 150000, "city": "Maroua", "seniority": "Seniority", "rating": 4, "comment": "mon commentaire", "job_title": "my job title"}' -H 'Content-Type: application/json'
    

    you should see something like this 👇

    {"message":"created"}
    

    You can see that last element with curl -s -X GET "http://localhost:7000/ratings?page=1&limit=200" | jq | tail -n 19

    The output should be close to this 👇

     {
          "salary_id": 105,
          "company_id": 102,
          "company_rating_id": 35,
          "rating": 4,
          "salary": 150000,
          "company_name": "La Mater",
          "seniority": "Seniority",
          "comment": "mon commentaire",
          "job_title": "my job title",
          "country": "Cameroon",
          "city": "Maroua",
          "createdat": "2022-02-13T00:00:00Z"
        }
      ],
      "limit": 200,
      "nbHits": 105,
      "offset": 0
    }
    
  • Add average-salary get endpoint

    Add average-salary get endpoint

    This pull request add the GET average-salary endpoint

    Steps to verify:

    • move to the backend folder with cd ./backend
    • run make start-postrges to run an initialized database
    • run make run to launch the api
    • then run the command curl -X GET localhost:7000/average-rating you should see something like this
    {"rating":3,"salary":2543437}
    
  • Add get jobtitles endpoint

    Add get jobtitles endpoint

    This pull request add the GET jobtitles endpoint

    Steps to verify:

    • move to the backend folder with cd ./backend
    • run make start-postrges to run an initialized database
    • run make run to launch the api
    • then run the command curl -X GET localhost:7000/jobtitles you should see something like this
    ["Account Coordinator","Account Executive","Account Representative I","Account Representative II","Account Representative III","Account Representative IV","Accountant I","Accountant II","Accountant III","Accountant IV"
    ...
    ]
    
  • feat(backend): do not consider ratings == 0 , when calculating the average rating

    feat(backend): do not consider ratings == 0 , when calculating the average rating

    This pull request do not consider ratings equal to 0 when calculating the average rating

    Step to verify

    • move to the backend folder with cd ./backend
    • run make start-postrges to run an initialized database
    • run make run to launch the api

    1️⃣then run the command to create a ratings

    curl -s -X POST 'http://localhost:7000/ratings' -H 'Content-Type: application/json' -d '{"city": "Douala","comment": "my comment","company_name": "Oss","job_title": "Dev","rating": 2,"salary": 1200,"seniority": "CV"}'
    

    2️⃣run the following command to get the average rating

    curl -s -X GET "http://localhost:7000/average-rating?company=Oss"
    

    you should see something like this 👇

    {
        "rating": 2,
        "salary": 1200
    }
    

    3️⃣ now run this command x times to create company rating with rating == 0

    curl -s -X POST 'http://localhost:7000/ratings' -H 'Content-Type: application/json' -d '{"city": "Douala","comment": "my comment","company_name": "Oss","job_title": "Dev","rating": 0,"salary": 0,"seniority": "CV"}'
    

    4️⃣ run the steps 2 the rating field in the output should be the same

  • Update description of Company Name

    Update description of Company Name

    You are required to enter the name of the company. We understand you might not want to share the name of the company despite the field being anonymized- please enter a description of the company (e.g. "local startup", "well-known bank" or legacy company, etc)

  • update: added confirmation when a salary les than 10000 is entered

    update: added confirmation when a salary les than 10000 is entered

    This pull request ask for users confirmation when a salary amount less than 10000 is entered

    Why ? This is to prevent mistake inputs by users when they sometimes input amounts such as 250 or 1. This is to solve #343 How ? Let us know how it does what it does

  • Prompt user for confirmation when a very low salary is entered

    Prompt user for confirmation when a very low salary is entered

    When adding salary, Even when 1 is entered it still gets submitted. I think a prompt can be added for the user to confirm before submitting so that in case the amount entered is an error, it can be corrected

  • add a backend-frontend captcha to ensure all requests are comming from humans

    add a backend-frontend captcha to ensure all requests are comming from humans

    WHY

    To protect the system on random input requests

    HOW

    • When navigating on the website form, to add a new salary
    • We should get from the backend a unique code that should be posted with the actual form session
    • if there is no code is provided we are sure it's not a request comming from someone, i the code is present, we should check that it's valid then we save the new entry !

    MORE

    a little related to : https://github.com/osscameroon/jobsika/issues/305

  • Elements on the last row are not aligned

    Elements on the last row are not aligned

    The elements in the last row of the table showing the averages are not aligned(See screenshot below). This can cause confusion if not taken care of. image

    I suggest the elements in the table be aligned as in the image below. image

  • Force the user to enter a real salary when contributing

    Force the user to enter a real salary when contributing

    As we can see on the App we have many unreal salaies such as 1 FCFA or 0 FCFA or even 190 FCFA i suggest that we force the user to enter a salarie at least begger than 1000 FCFA, otherwise the form will not be validated.

🔥 Continuous profiling platform — debug performance issues in your code!
🔥  Continuous profiling platform — debug performance issues in your code!

Pyroscope is an open source continuous profiling platform.

Jan 7, 2023
(Experimental) Go library for multi-platform clipboard.

clipboard This is a multi-platform clipboard library in Go. Abstract This is clipboard library in Go, which runs on multiple platforms. External clipb

Nov 20, 2022
Go-Web-Dev - Golang helps the developer to develop highly scalable applications

Go-Web-Dev Golang helps the developer to develop highly scalable applications. T

Feb 5, 2022
KintoHub is an open source build and deployment platform designed with a developer-friendly interface for Kubernetes.
KintoHub is an open source build and deployment platform designed with a developer-friendly interface for Kubernetes.

What is Kintohub? KintoHub is an open source build and deployment platform designed with a developer-friendly interface for Kubernetes. Build your cod

Jun 7, 2022
Koyeb is a developer-friendly serverless platform to deploy apps globally.
Koyeb is a developer-friendly serverless platform to deploy apps globally.

Koyeb Serverless Platform Deploy a Go Gin application on Koyeb Learn more about Koyeb · Explore the documentation · Discover our tutorials About Koyeb

Nov 14, 2022
Go SDK for working with the Nightfall Developer Platform

Nightfall Go SDK nightfall-go-sdk is a Go client library for accessing the Nightfall API. It allows you to add functionality to your applications to s

Jun 20, 2022
Go-grpc-template - A small template for quickly bootstrapping a, developer platform independent gRPC golang application
Go-grpc-template - A small template for quickly bootstrapping a, developer platform independent gRPC golang application

go-grpc-template A small template for quickly bootstrapping a developer platform

Jan 20, 2022
Go bindings for OpenCV1.1 (Dev/Zero Dependencies).
Go bindings for OpenCV1.1 (Dev/Zero Dependencies).

Go语言QQ群: 102319854, 1055927514 凹语言(凹读音“Wa”)(The Wa Programming Language): https://github.com/wa-lang/wa Go bindings for OpenCV1.1 PkgDoc: http://godoc

Dec 6, 2022
A multi-service dev environment for teams on Kubernetes
A multi-service dev environment for teams on Kubernetes

Tilt Kubernetes for Prod, Tilt for Dev Modern apps are made of too many services. They're everywhere and in constant communication. Tilt powers multi-

Jan 5, 2023
⚡️ A dev tool for microservice developers to run local applications and/or forward others from/to Kubernetes SSH or TCP
⚡️ A dev tool for microservice developers to run local applications and/or forward others from/to Kubernetes SSH or TCP

Your new microservice development environment friend. This CLI tool allows you to define a configuration to work with both local applications (Go, Nod

Jan 4, 2023
Your dev tool to manage /etc/hosts like a pro!
Your dev tool to manage /etc/hosts like a pro!

hostctl This tool gives you more control over the use of your hosts file. You can have multiple profiles and switch them on/off as you need. Why? It i

Jan 2, 2023
Gaea is a mysql proxy, it's developed by xiaomi b2c-dev team.
Gaea is a mysql proxy, it's developed by xiaomi b2c-dev team.

简介 Gaea是小米中国区电商研发部研发的基于mysql协议的数据库中间件,目前在小米商城大陆和海外得到广泛使用,包括订单、社区、活动等多个业务。Gaea支持分库分表、sql路由、读写分离等基本特性,更多详细功能可以参照下面的功能列表。其中分库分表方案兼容了mycat和kingshard两个项目的路

Dec 30, 2022
a Make/rake-like dev tool using Go
a Make/rake-like dev tool using Go

About Mage is a make-like build tool using Go. You write plain-old go functions, and Mage automatically uses them as Makefile-like runnable targets. I

Jan 7, 2023
Powerful workflow engine and end-to-end pipeline solutions implemented with native Kubernetes resources. https://cyclone.dev
Powerful workflow engine and end-to-end pipeline solutions implemented with native Kubernetes resources. https://cyclone.dev

Cyclone Cyclone is a powerful workflow engine and end-to-end pipeline solution implemented with native Kubernetes resources, with no extra dependencie

Dec 6, 2022
An attempt to make a cli for dev.to in Go
An attempt to make a cli for dev.to in Go

Devto a cli for dev.to This is a work in progress so don't a expect a full support for Dev API(beta). Table of contents Devto a cli for dev.to Table o

Mar 13, 2022
Example used to try a compose application with Docker Dev Environments

compose-dev-env Example used to try a Compose application with Docker Dev Environments. This example is based on the nginx-golang-mysql sample of awes

Dec 29, 2022
exo: a process manager & log viewer for dev
 exo: a process manager & log viewer for dev

exo: a process manager & log viewer for dev exo- prefix – external; from outside. Features Procfile compatible process manager.

Dec 28, 2022
this is an example of hystrix-go usage in web dev

hystrix-go-example this is an example of hystrix-go usage in web dev Explanation this example contains 2 service: alpha as our main service, circuit b

Apr 22, 2022