Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/monamoxie/flash-card

A powerful command line application for managing and practicing flash cards. Written in PHP with CLI authentication capabilities, it is portable, fully containerised and easy to setup.
https://github.com/monamoxie/flash-card

cli command-line-interface docker flashcards laravel mysql nginx php phpunit

Last synced: 6 days ago
JSON representation

A powerful command line application for managing and practicing flash cards. Written in PHP with CLI authentication capabilities, it is portable, fully containerised and easy to setup.

Awesome Lists containing this project

README

        


Github Actions

# FLASH CARD

A powerful command line application for managing and practicing flash cards. Written in PHP with CLI authentication capabilities, it is portable, fully dockerised and easy to setup.

## Tech Stack
- PHP 8 PHP
- Docker docker
- Laravel Laravel
- Redis redis
- MySQL MySQL
- Nginx nginx

## Installation
- Clone the repo
- cd into cloned repo
- `cp .env.example .env`
- Fillup all necessary variables in `.env`
- Pull docker images and run containers `docker-compose up --build -d --wait`
- cd into php container `docker exec -it flashcard_php bash`
- Run `composer install`
- Run `php artisan key:generate`
- Run `php artisan migrate`
- Run CLI `php artisan flashcard:interactive`

## BONUS ADDITIONS
### MYSQL
A MySQL DB instead of the the default SQLite installation provided by Laravel out of the box. Makes this powerful and production ready, if necessary.
### DEDICATED TEST DB
- For Feature/Unit testing, a dedicated MySQL container instead of the traditional in-memory or SQLite DB. It's good to use the same testing engine for both your production and test DB. It encourages consistency.
### PAGINATION
- Ability to paginate the results. This will be fully embraced by users with hundreds or thousands of flashcards, it gives the ability to navigate the program, either during listing, update, create or delete actions.







## TESTING
```
php artisan test
```

## LICENSE
[MIT license](https://opensource.org/licenses/MIT)