Platform for creating and managing projects towards a Hackathon.
Basic functionality includes creating and listing active projects plus building teams around interesting projects in preparation for the event.
- Docker
- MongoDB-container
- Redis-container
or
- NodeJS
- NPM
- MongoDB
- Redis
LOGGING- For logging requests. true/falseMONGO_URL- Url for MongoDB, example: mongo://mongoserver:27017REDIS- Url for Redis, example: redis://redisserver:6379HASH_SALT- For hashing passowrdTOKEN_SECRET- For JWT sign
Example of a docker-compose.yml for production:
version: '3'
services:
web:
image: neme/l3ifhack
ports:
- 8000:8000
depends_on:
- mongo
- redis
environment:
- LOGGING=false
- MONGO_URL=mongodb://mongo/l3ifhack
- REDIS=redis://redis:6379
- TOKEN_SECRET=tokensecret
mongo:
image: mvertes/alpine-mongo
volumes:
- mongodata:/data/db
redis:
image: redis:4-alpine
volumes:
- redisdata:/data
volumes:
mongodata:
redisdata:
docker-compose up
While server is up and running, use the following:
docker-compose exec web node_modules/.bin/lab
All endpoints require that the user is logged in.
For users api, look up hapi-users-plugin
POST /api/projects- Default payload
title- Joi.string().required()text- Joi.string().required()author- Joi.string().required()
- Default payload
PUT /api/projects/{id}- Default payload
title- Joi.string().required()text- Joi.string().required()author- Joi.string().required()
- Default payload
DELETE /api/projects/{id}GET /api/projects- Optional query parameters
sortByValid options:title,_id,createdAt,updatedAtorderValid options:desc&asc. Defaults todesc
- Default response
- Array with all projects
- Optional query parameters
GET /api/projects/{id}- Default response
- Object with project
- Default response
POST /api/projects/{id}/upvotePOST /api/projects/{id}/join- Default payload
joinee- Joi.string().required()
- Default payload
DELETE /api/projects/{id}/joinee/{joineeId}POST /api/projects/{id}/comment- Default payload
name- Joi.string.required()comment- Joi.string.required()
- Default payload
DELETE /api/projects/{id}/comment/{commentId}