Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alexfernandez/challenger-code
Challenge yourself with coding exercises
https://github.com/alexfernandez/challenger-code
Last synced: about 1 month ago
JSON representation
Challenge yourself with coding exercises
- Host: GitHub
- URL: https://github.com/alexfernandez/challenger-code
- Owner: alexfernandez
- License: gpl-3.0
- Created: 2020-05-08T09:36:21.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-10-04T23:25:38.000Z (over 1 year ago)
- Last Synced: 2024-11-24T18:38:54.018Z (about 1 month ago)
- Language: JavaScript
- Size: 298 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Challenger Code
Challenge yourself with coding exercises.
Official website: [challengerco.de](https://challengerco.de/).## Installation
If you want to install locally:
$ npm i challenger-code
Start with
$ npm start
You will need a running instance of MongoDB listening to 127.0.0.1,
no security.
It will use database `cc`.### Configuration
You will need to have a file in the root directory
called `.challenger-code.json`, containing:```
{
"jwtSecret": "...",
"githubId": "...",
"githubSecret": "..."
}
```The first value `jwtSecret` is used to encrypt JWT tokens,
so make sure that it is kept secret.
The next values `githubId` and `githubSecret` are used to authenticate using GitHub.
Please refer to
[GitHub: Authorizing OAuth Apps](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/)
for details.## API
The following API calls are published.
### `GET /api/challenge/:owner/list`
Returns a list of challenges with `id` and `name` from `owner`.
### `GET /api/challenge/:owner/:id`
Returns the challenge with the given `owner` and `id`.
### `POST /api/challenge/:owner/:id/run`
Runs the given challenge `id` from `owner` with some code.
Body parameters:* `code`: the code to run.
## Pending Stuff
This is a list of things I'm working on.
Please let me know if you want to tackle any
so we don't duplicate efforts.
Thanks!* Challenge editor:
accepts submissions from anyone,
saved as `challengeco.de/owner/challenges`.
* Admin role:
select challenges for the main collection.
* Challenger list:
select by category, difficulty.
* User page:
show challenges run and achievements by any player.
* ✅View challenge stats:
show min and average for: nodes, execution time, memory?
* Check max memory used by a challenge run.
* Browser runner:
run challenges directly in the browser.
* ✅Redirect [http site](http://challengerco.de/) to https.## Architecture
The project uses [fastify](https://github.com/fastify/fastify).
It loosely follows the structure of
[fastify-example-twitter](https://github.com/fastify/fastify-example-twitter).## Compatibility
### Version 0.2.0 to 0.3.0
Challenge runs now have `id`, not `challengeId`.
If you want to preserve your existing challenge runs,
use this script on the `mongo` console:> db.runs.find().snapshot().forEach(e => db.runs.update({_id: e._id}, {$set: {id: e.challengeId}})
## Acknowledgements
The code and challenges are open for participation.
Pull requests are very welcome!(C) 2020 Alex Fernández.
Licensed under the GPL v3.
See LICENSE file for details.