Coder Social home page Coder Social logo

etimo-achievements's Introduction

etimo-achievements

CI Staging Production

Etimo Achievements is a simple, open-source, web-based platform for managing and sharing achievements.

It is used by Etimo to create, track and hand out achievements on Slack.

Contributing

If you want to contribute to this project, see the Contributing file for information on how to get started.

Technologies

These are the technologies used in this project:

Technology Description
Docker Containers are used in local development and in production.
ESLint Code linting.
Express Express is used for the API.
GNU Bash CI/CD scripts.
GitHub Actions Continuous integration/deployment.
Husky Git hooks.
Jest Unit testing.
Knex DB access, migrations and seed files.
Kubernetes Container orchestration.
Node.js Server-side JavaScript for the backend.
Nodemon Change monitoring during development.
Objection.js ORM for Knex.
Postgres SQL database.
Prettier Code formatting.
Swagger API documentation (OpenAPI v3).
TypeScript Strong typing.
Yarn Package manager & workspaces.

etimo-achievements's People

Contributors

niclaslindstedt avatar elmaxe avatar rickardlofberg avatar juliuswillen avatar morgan-cromell avatar

Stargazers

 avatar  avatar Johan Törnblom avatar Björn Wahlberg avatar

Watchers

 avatar

Forkers

elmaxe wadholm

etimo-achievements's Issues

yarn docker-rebuild is failing

src/database.ts(1,64): error TS2307: Cannot find module '@etimo-achievements/common' or its corresponding type declarations.
src/models/achievement-model.ts(1,22): error TS2307: Cannot find module '@etimo-achievements/common' or its corresponding type declarations.
src/models/user-achievement-model.ts(1,22): error TS2307: Cannot find module '@etimo-achievements/common' or its corresponding type declarations.
src/models/user-model.ts(1,22): error TS2307: Cannot find module '@etimo-achievements/common' or its corresponding type declarations.
src/utils/catch-errors.ts(1,84): error TS2307: Cannot find module '@etimo-achievements/common' or its corresponding type declarations.

Deploy till produktion

Vi behöver deploya till produktion genom att tagga om staging-imagen och deploya heroku-appen.

Create examples for all dtos

All properties should have examples.

 *         achievement:
 *           type: string
 *           description: The name of the achievement
 *           example: <insert example here>

Slackbot should be able to create achievements

Achievements should be able to be created by using the slack bot.
To make it easier for the user a window should appear where the user is asked to name the achievement and write a description of the achievement.

Topplista

Vi behöver en topplista.

GET /highscore

Den ska skapa en highscore utifrån vilka användare som finns, och vilka achievements de har.

Reorder routes

Reorder the routes to make swagger more readable.

  • Should be ordered alphabetically.
  • Should be ordered GET, POST for each route.

Slack-bott med /commands

En Slack-bott som anropar vårt API

Tillhörande endpoints. Få upp en basal snurra som reagerar på Slack-events.

Entities package

Move entities to their own package so they can be referenced by all packages.

Oauth2 login

We need a way to login to the admin interface. Until we have an admin interface, we should have a password login flow with OAuth2 to get a jwt token that we can use in Postman.

Or maybe use our Gmail accounts (@Etimo) to login and create local users?

Bygg bara beroende paket

Om jag uppdaterar t ex express-middleware paketet, så vill jag inte att nodemon bygger om alla paket.

Den borde bara bygga om express-middleware + alla paket som BEROR på det, och som beror på paketen som byggs om.

OS X and Linux formats code differently

When saving in vs code, the code gets formatted differently on different platforms.

We should include settings in .vscode that makes this behaviour the same on all platforms.

Local /version endpoint is not working

api_1       | Error: Cannot find module './version.json'
api_1       | Require stack:
api_1       | - /app/packages/api/dist/resources/version.js
api_1       | - /app/packages/api/dist/resources/index.js
api_1       | - /app/packages/api/dist/server.js
api_1       | - /app/packages/api/dist/index.js
api_1       |     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15)
api_1       |     at Function.Module._load (internal/modules/cjs/loader.js:746:27)
api_1       |     at Module.require (internal/modules/cjs/loader.js:974:19)
api_1       |     at require (internal/modules/cjs/helpers.js:93:18)
api_1       |     at VersionController.getVersion (/app/packages/api/dist/resources/version.js:9:22)
api_1       |     at /app/packages/api/dist/utils/endpoint-helper.js:6:9
api_1       |     at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
api_1       |     at next (/app/node_modules/express/lib/router/route.js:137:13)
api_1       |     at Route.dispatch (/app/node_modules/express/lib/router/route.js:112:3)
api_1       |     at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)

Förbättrad loggning

Just nu är Logger-klassen lite väl enkel.

Förbättra den så den har olika loggnivåer och kan hålla ett kontext som den loggar.

Autentisering

Steg 1 blir att använda en api key i headern som måste matcha en ENV-variabel.

Scopes

Lägg till scopes på token och avgör om man får access till endpoints baserat på detta.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.