GithubHelp home page GithubHelp logo

pilopa / mtg-cube Goto Github PK

View Code? Open in Web Editor NEW
1.0 4.0 0.0 485 KB

Open Source project with the aim to create a free cube management web application for Magic: the Gathering

License: GNU Affero General Public License v3.0

JavaScript 39.12% TypeScript 46.45% CSS 7.36% HTML 7.06%
mtg typescript angular magic cube npm nodejs cards

mtg-cube's People

Contributors

pilopa avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

mtg-cube's Issues

Integrate Card Database Tool

There is an additional tool to this project which creates the card database. It is written in NodeJS and is functional, but not well integrated into this project. Currently, one has to run the db creation tool and manually copy the database over into this project's asset folder.

The tool has to be better integrated, either as an NPM package dependency or, for now, in a subdirectory in this repo. Either way, the tool would have to be slightly adjusted to either approach.

Write Tests

Currently, the application does not contain any tests despite featuring a fully ready testing framework for unit and end-to-end (e2e) tests. I am not the most experienced with writing those kind of tests for angular applications and any help or suggestion is welcomed.

Create Local Development Setup Guide

For others to start contributing and reviewing code changes, they need to be able to run the project locally. The following subtasks will set a starting point for that:

  • Create COLLABORATE.md to the repo and fill it with information
  • Update the build/dev pipeline to allow cloning the repo and installing/serving the application

Setup CLA Assistant

One important part of Open Source projects is the Contributor License Agreement (CLA) which should be signed by each person that contributes code via a pull request (or directly, for that matter). CLA Assistant could provide a free option to solve an otherwise tedious process.

Implement Card Search

Developers need a performant and convenient way to search for cards with a set of filters.

The idea is to have a service which exposes a query function to which filters can be passed. In-Memory cache and browser cache should be used where-ever possible and the code should be implemented in a well-documented and reusable way.

I started work on this feature and managed to reduce the size of the base indices (excluding text indices) by about 50%.

Create a Page Template

  • Finish the page template component
  • Create an example page (cube collection) to showcase the template

The page template component is supposed to
a) make the user interface consistent
b) help contributors to focus on implementing features, instead of having perform repetitive tasks

It makes sure the page content is positioned correctly and adjusts properly to mobile screens. It also allows developers to adjust side-content, navigation and toolbar-content.
Ultimately, the template should be optional to not prevent developers from creating very specific layouts.

Generate Average Cube

A periodically updated, aggregated summary of all cubes in the system.

It could be multiple sizes of lists, e.g 360, 540 & 720.

While there is only a small volume of cubes, the list could be created daily. Once the number of cubes exceeds ~1000, it should be roughly weekly.

Implementation:
Use a http cloud function triggered via a free cron service.

Improve circleci config

The project is set up to be automated by circleci but it currently does not pass deployment. My experience with circleci is fairly limited and I do not have the time to dive deep into it as the other issues take priority. If there is anyone who has experience and a good idea for the following setup, please respond to this issue:

Framework: Angular 7+
Build Tool: Angular CLI with webpack
Dependency Resolver: npm
CI: CircleCI
Hosting: Google Firebase

There are currently two firebase projects setup:

  • mtg-cube
  • mtg-cube-dev

I considered using one as production and one as staging environment. The development builds could be fully automated and run on each pull request which passes tests/build. The production build should trigger only on manual, tagged releases to the master branch.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.