quark
quark copied to clipboard
An open source framework to build competitive platforms
Quark
This is a Laravel package that provides a code application for building platforms to host competitions.
Documentation
The entire documentation is available at: https://quark.sdslabs.co
Setup
-
Create and setup a new Laravel app
-
Add the folowwing repositories to the
composer.json'srepositoriesfield:
"repositories": [
{
"type": "vcs",
"url": "[email protected]:sdslabs/quark",
"no-api": true
},
{
"type": "vcs",
"url": "[email protected]:sdslabs/falcon.git",
"no-api": true
}
],
-
Add Quark as a dependency by adding
"sdslabs/quark": "dev-laravel-package"torequirefield incomposer.json -
Add Falcon as a dependency by adding
"sdslabs/falcon": "dev-composer-pkg"torequirefield incomposer.json -
Run
$ composer update sdslabs/* -
Add
SDSLabs\Quark\QuarkServiceProvider::class,under* Package Service Providers...toconfig/app.php. -
Remove the migration file for
create_users_tableandpassword_resets_tablefromdatabase/migrations. -
Add
$this->call(SDSLabs\Quark\Database\Seeds\DatabaseSeeder);toDatabaseSeederunderdatabase/seeds. -
Add following config to
.env.exampleand also to.env:
FALCON_CLIENT_ID=client_id
FALCON_CLIENT_SECRET=secret
FALCON_URL_ACCESS_TOKEN=http://falcon.sdslabs.local/access_token
FALCON_URL_RESOURCE_ONWER_DETAILS=http://falcon.sdslabs.local/users/
FALCON_ACCOUNTS_URL=http://arceus.sdslabs.local/
FALCON_SCOPES=email,image_url
-
ORGANIZATIONS_ALLOWEDin.env.examplecan be provided in master app's.env -
Update
config/auth.php:- Update the
defaults.guardtofalcon - Delete the section on
guards
- Update the
-
Run the migrations with:
$ php artisan migrate -
Run the seeds with:
$ php artisan db:seed -
Go outside and do a dance ;)
Extending the models in the application
To extend any of the default models, first create the new model.
Then add a line like $this->app->bind(QuarkCompetition::class, AppCompetition::class);
to AppServiceProvider.php's register method.
Extending the controllers in the application
Just override the router with your controller's methods
General instructions for this project and the application
-
Don't explicitly call the static methods of any class like
Competition::get()orSomethingHelper::help(). Instead use the IoC container or Facades/Contracts .
e.g.App::resolve(Competition::class)->get() -
Don't initialise the classes manually like
new Competition(). Instead use IoC container'smakemethod. -
The above practices makes it easier to swap the underlying classes, i.e. the classes used by Quark can be extended by the application and the extended classes will be used inside Quarks's classes/
Working on Quark
- First you need an application. If you don't have one already setup, setup a demo application following the above instructions
- Symlink the
vendor/sdslabs/quarkfolder to your local clone of quark.
How can I contribute?
Read here to know our contribution guidelines. Ping us at chat.sdslabs.co to get guidance. You can start with setting up Quark on your machine and try solving a few bugs listed here: https://github.com/sdslabs/quark/issues You can also have a look at the sample app sdslabs/laplace-no-ma that uses Quark.
License
This project is under the MIT license
Community Support
Created by SDSLabs with :heart: