Code Quiz MonoRepo (API, API Client, App)

Overview

Code Quiz

Welcome to the Code Quiz Open Source project from How To Code Well.

This is an Open Source project that includes an API and an App for the daily code quizzes.

The daily code quizzes are published to Instagram and Twitter. This GitHub project is under development and will eventually allow access to the quizzes via a JSON API, Mobile app and website.

This Monorepo contains the following three projects.

  1. API - A Symfony 6, PHP 8 and Maria DB backend.
  2. API-Client - A NPM package for mock testing the API.
  3. App - A Mobile application that displays code quizzes.
  4. Website - A Website that displays code quizzes.

Project development

This project is being developed live on YouTube most Tuesdays at 6pm BST and most Sundays on Twitch.

Help needed!

If you would like to help build the project then please pick a ticket from the issues. If you are new to Open Source then pick an issue labeled good first issue.

Pull requests may be reviewed live on Twitch/YouTube.

Contributing to this project

See the CONTRIBUTING guide on how to contribute to the project.

API

To install the API please read the wiki page

Database

Please read the wiki page on how to access and use the database.

API Client

To install the API client please read the API-Client wiki page

Comments
  • Create website Docker image

    Create website Docker image

    TODO

    • [ ] Create website/Dockerfile
    • [ ] Dockerfile should replicate https://github.com/vercel/next.js/blob/canary/examples/with-docker/Dockerfile
    • [ ] Test docker container
    • [ ] Create website/.dockerignore with the following
    Dockerfile
    .dockerignore
    node_modules
    npm-debug.log
    README.md
    .next
    .idea
    .DS_Store
    
    good first issue help wanted website devops 
    opened by pfwd 2
  • Create unit tests for app fixtures.php

    Create unit tests for app fixtures.php

    • Fixes #90

    To test load function inside AppFixtures class Should we run such command for creating test database and if yes where should we define it :) ?

    docker-compose exec api bin/console --env=test doctrine:database:create

    opened by metinbaris 2
  • Add JavaScript Quiz fixtures

    Add JavaScript Quiz fixtures

    opened by pfwd 2
  • Remove 't' from question 2

    Remove 't' from question 2

    Standards checklist:

    • [x] The PR title is descriptive.

    • [x] The PR doesn't replicate another PR which is already open.

    • [x] I have read the contribution guide and followed all the instructions.

    • [x] The code is mine or it's from somewhere with an MIT-compatible license.

    • [x] The code is efficient, to the best of my ability, and does not waste computer resources.

    • [x] The code is stable and I have tested it myself, to the best of my abilities.

    • Fixes #48

    opened by Mannuel25 2
  • Remove 't' from HTML question 2

    Remove 't' from HTML question 2

    Describe the bug

    There is a 't' in the 'content' field for HTML question 2. This shouldn't be there. The content value should be4 Please remove

    Steps to reproduce

    1. View file api-client/mockData/htmlAnswers.ts
    2. Remove the 't' from line 27

    Expected behavior

    The content value should be 4

    Screenshots and recordings

    No response

    OS / Linux distribution

    na

    Additional context

    No response

    bug good first issue help wanted api client 
    opened by pfwd 2
  • generate-api ../docs/created/openapi) does not exist

    generate-api ../docs/created/openapi) does not exist

    When running yarn run generate-api the following error is reported

    [main] INFO  o.o.c.ignore.CodegenIgnoreProcessor - Output directory (/Users/peterfisher/code/howtocodewell/code-quiz/api-client/../docs/created/openapi) does not exist, or is inaccessible. No file (.openapi-generator-ignore) will be evaluated.
    

    Work should be done as part of https://github.com/howToCodeWell/code-quiz/issues/129

    bug api client 
    opened by pfwd 1
  • #71 Adding comment

    #71 Adding comment

    Standards checklist:

    • [ ] The PR title is descriptive.
    • [ ] The PR doesn't replicate another PR which is already open.
    • [ ] I have read the contribution guide and followed all the instructions.
    • [ ] The code is mine or it's from somewhere with an MIT-compatible license.
    • [ ] The code is efficient, to the best of my ability, and does not waste computer resources.
    • [ ] The code is stable and I have tested it myself, to the best of my abilities.

    GitHub issues fixed:

    • Fixes #71

    Other comments:

    ...

    opened by pfwd 1
  • remove 't' from question 2

    remove 't' from question 2

    Standards checklist:

    • [x] The PR title is descriptive.
    • [x] The PR doesn't replicate another PR which is already open.
    • [x] I have read the contribution guide and followed all the instructions.
    • [x] The code is mine or it's from somewhere with an MIT-compatible license.
    • [x] The code is efficient, to the best of my ability, and does not waste computer resources.
    • [x] The code is stable and I have tested it myself, to the best of my abilities.

    GitHub issues fixed:

    • Fixes #48
    opened by Mannuel25 1
  • Add the ability to use .env files

    Add the ability to use .env files

    Add the ability to use .env files to the api-client

    TODO

    • [x] Install https://www.npmjs.com/package/dotenv
    • [x] Update the .gitignore file in the API-Client and ignore the .env file
    • [x] Create a .env.sample file in the api-client root with the following
      • [x] API_VERSION=v1
      • [x] API_BASE_PATH=http://localhost:3000/
    • [x] Update API-Client install guide with a section on how to copy the .env.sample to a new .env file and make the required changes.
    enhancement good first issue help wanted api client 
    opened by pfwd 1
  • Replace jsonServer.rewriter data with routes.json

    Replace jsonServer.rewriter data with routes.json

    The following

    {
        '/quiz/:slug': '/quiz?slug=:slug'
    }
    

    in

    server.use(jsonServer.rewriter({
        '/quiz/:slug': '/quiz?slug=:slug'
    }))
    

    should be replaced by the routes.json file.

    An attempt was made to use path.join(__dirname, 'routes.json'), as the first argument to jsonServer.rewriter but this did not work.

    bug good first issue help wanted api client 
    opened by pfwd 1
  • #159 Checking if artifacts have been created

    #159 Checking if artifacts have been created

    Standards checklist:

    • [ ] The PR title is descriptive.
    • [ ] The PR doesn't replicate another PR which is already open.
    • [ ] I have read the contribution guide and followed all the instructions.
    • [ ] The code is mine or it's from somewhere with an MIT-compatible license.
    • [ ] The code is efficient, to the best of my ability, and does not waste computer resources.
    • [ ] The code is stable and I have tested it myself, to the best of my abilities.

    GitHub issues fixed:

    • Fixes #159

    Other comments:

    ...

    opened by pfwd 0
  • 157 poc markdown

    157 poc markdown

    Standards checklist:

    • [ ] The PR title is descriptive.
    • [ ] The PR doesn't replicate another PR which is already open.
    • [ ] I have read the contribution guide and followed all the instructions.
    • [ ] The code is mine or it's from somewhere with an MIT-compatible license.
    • [ ] The code is efficient, to the best of my ability, and does not waste computer resources.
    • [ ] The code is stable and I have tested it myself, to the best of my abilities.

    GitHub issues fixed:

    • Fixes #157

    Other comments:

    ...

    opened by pfwd 0
  • Proof Of Concept: Store quizzes in Markdown files

    Proof Of Concept: Store quizzes in Markdown files

    Build a proof of concept that replaces the PHP fixture files as Markdown files.

    The following tasks are subject to change

    Markdown work:

    • [ ] Create a /quizzes folder
    • [ ] Create a /quizzes/<quiz_name> folder
    • [ ] Create a markdown file per question in /quizzes/<quiz_name>/1.md
    • [ ] Include the following as frontmatter
      • [ ] Question number
    • [ ] Add the possible answers as markdown check boxes
    • [ ] Add the question as a markdown paragraph
    • [ ] Add the answer as detail summary HTML elements

    PHP work:

    • [ ] Install parsedown
    • [ ] Create a Symfony command that reads the markdown files in the /quizzes/<quiz_name> and adds them to the database
    • [ ] Create a Symfony command that refreshes the database
    • [ ] Remove fixture files
    • [ ] Remove Doctrine fixtures bundle

    General work:

    • [ ] Update documendation
    • [ ] Update github workflow
    documentation enhancement api client api 
    opened by pfwd 0
  • Create a Vagrant VM Proof Of Concept

    Create a Vagrant VM Proof Of Concept

    Originally the API was built using Docker containers in a Vagrant virtual machine.
    The vagrant file is still in /api

    The project has moved on quite a far since the build of the API.

    Create a POC for building a Vagrant VM that covers all services (API/Website)

    api website devops 
    opened by pfwd 0
  • Install and setup dotenv

    Install and setup dotenv

    Install dotenv package

    Create .env.sample file with the following:

    PORT=3001

    Update README.md with instructions on how to create .env file with the PORT setting.

    enhancement good first issue help wanted website 
    opened by pfwd 0
Owner
How To Code Well
The How To Code Well Platform
How To Code Well
Google-api-php-client - A PHP client library for accessing Google APIs

Google APIs Client Library for PHP Reference Docs https://googleapis.github.io/google-api-php-client/main/ License Apache 2.0 The Google API Client Li

Google APIs 8.4k Dec 30, 2022
A2Reviews Client API lets you build apps, extensions or plugins to get reviews from the A2reviews APP

A2Reviews Client API lets you build apps, extensions or plugins to get reviews from the A2reviews APP. Including adding reviews to a store's products. It is used to import and export reviews through the API. This is the official package built and developed by A2Reviews, Inc.

Be Duc Tai 2 Sep 25, 2021
PHP JSON-RPC 2.0 Server/Client Implementation with Automatic Client Class Generation via SMD

PHP JSON-RPC 2.0 Server/Client Implementation with Automatic Client Class Generation via SMD

Sergey Bykov 63 Feb 14, 2022
oursms.app client library that allows you to send SMS

Oursms laravel client https://oursms.app client library that allows you to send SMS Installation Install oursms client with composer composer requir

Khalid Mohammad 11 Aug 27, 2022
The official Previewify.app PHP Client

Previewify for PHP This is the official Previewify client for PHP. Support us Like our work? You can support us by purchasing one of our products. Ins

Flowframe 6 Jan 19, 2022
An independent client for Kibilog.com, running on native code.

The library is a client for working with Kibilog.com The client works without cUrl. To work, it is necessary that in php.ini there is a setting allow_

null 1 Oct 29, 2021
DigitalOcean API v2 client for Symfony and API Platform

DigitalOcean Bundle for Symfony and API Platform DunglasDigitalOceanBundle allows using the DigitalOcean API from your Symfony and API Platform projec

Kévin Dunglas 25 Jul 27, 2022
Nexmo REST API client for PHP. API support for SMS, Voice, Text-to-Speech, Numbers, Verify (2FA) and more.

Client Library for PHP Support Notice This library and it's associated packages, nexmo/client and nexmo/client-core have transitioned into a "Maintena

Nexmo 75 Sep 23, 2022
API client for ThePay - payment gate API

This is the official highly compatible public package of The Pay SDK which interacts with The Pay's REST API. To get started see examples below.

ThePay.cz s.r.o. 3 Oct 27, 2022
A simple PHP GitHub API client, Object Oriented, tested and documented.

PHP GitHub API A simple Object Oriented wrapper for GitHub API, written with PHP. Uses GitHub API v3 & supports GitHub API v4. The object API (v3) is

KNP Labs 2k Jan 7, 2023
A simple Object Oriented PHP Client for Termii SMS API

Termii Client A simple Object Oriented PHP Client for Termii SMS API. Uses Termii API. Requirements PHP >= 7.2 Guzzlehttp ~6|~7 Installation Via Compo

Ilesanmi Olawale Adedotun 5 Feb 24, 2022
Xendit REST API Client for PHP - Card, Virtual Account, Invoice, Disbursement, Recurring Payments, Payout, EWallet, Balance, Retail Outlets Services

Xendit REST API Client for PHP - Card, Virtual Account, Invoice, Disbursement, Recurring Payments, Payout, EWallet, Balance, Retail Outlets Services

Xendit 96 Jan 6, 2023
php 8 client for the lemon.markets api

lemon.markets php client This repository contains a php 8+ compatible client for the https://lemon.markets API. The documentation of the API can be fo

Daniel Freudenberger 4 Nov 17, 2022
PHP client for Microsoft Azure Face API.

Microsoft Azure Face API PHP client A PHP library that utilizes Azure Face REST API. Requirements PHP >= 7.4 Installation composer require darmen/php-

Darmen Amanbayev 6 Sep 14, 2022
Google PHP API Client Services

Google PHP API Client Services

Google APIs 1.1k Dec 22, 2022
PHP Client for the GoFlink API

GoFlink PHP API Client This project is an unofficial library to communicate with the GoFlink API from your PHP project. Documentation about the API is

Rico Hageman 4 Oct 3, 2022
A PHP client for the official Kizeo Forms API V3+. 📌

Kizeo Forms API V3+ - PHP This is a Swagger generated doc for Kizeo REST API 3. You can find additionnal documentation here : Online documentation. Th

siapepfrance 1 Oct 26, 2021
⚡️ Web3 PHP is a supercharged PHP API client that allows you to interact with a generic Ethereum RPC.

Web3 PHP is a supercharged PHP API client that allows you to interact with a generic Ethereum RPC. This project is a work-in-progress. Code and docume

Web3 PHP 665 Dec 23, 2022
Shopee Open API v2 Client build with php

Shopee PHP Client This is a Shopee PHP Client, currently supported for API V2 in ShopeeOpenPlatform Composer Install composer require haistar/shopee-p

ravimukti 17 Dec 27, 2022