Giter VIP home page Giter VIP logo

aeons-end-randomizer's Introduction

CircleCI Netlify Status App Docs Official Aeons End Discord

AER

ToC

About

Aeons End Randomizer is an unofficial companion app for the popular deck building game Aeons End. It is build as an offline first Progressive Web App, which means that it can be opened inside a regular web browser, but also be saved to you smartphone or tablet device (by using the "add-to-homescreen" option, your handheld browser provides). If you do the latter, the randomizer will behave almost like a native application.

AER currently does not communicate with any kind of backend. All user data, like e.g. your settings are saved locally on you device in your browsers instance of indexedDB. This way you will always be able to use the app, even during periods where you do not have an internet connection.

Updating to the newest version

Currently updating is a bit cumbersome (don't worry, we are working on it). To receive the newest version of the app close all instances of it (browser tabs and instances added to your homescreen) and re-open them. In most cases this should do the trick. If you still do not have the newest version (check by referencing the version number inside the apps drawer), repeat the process.

Available Scripts

This project was bootstrapped with Create React App.

In the project directory, you can run:

yarn start

Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits.
You will also see any lint errors in the console.

yarn test:jest

Launches the test runner in the interactive watch mode.
See the section about running tests for more information.

yarn test:jest:ci

Runs jest single threaded for CI purposes. Otherwise memory issues might occur.

yarn test:coverage

Runs all tests and creates coverage for them

yarn test:components

Only runs component tests

yarn test:components:coverage

Only runs component tests and creates coverage

yarn test:redux

Only runs redux related tests

yarn test:redux:coverage

Only runs redux tests and creates coverage

yarn test:cy

Runs cypress test inside the command line

yarn test:cy:open

Opens the cypress app to run tests and see the dashboard

yarn deploy:docs

Deploys the ./docs directory directly to github pages. You need to have repository access and push permissions to run this command.

NOTE: To show the docs locally, you have to install docsify as global npm package and run docsify serve docs -p 3001 inside the project root.

yarn run build

Builds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.
Your app is ready to be deployed!

See the section about deployment for more information.

yarn run build:gh-pages

This builds the app for github pages. This should no longer be used, as production moved to netlify!

yarn run deploy

This is currently used as a our legacy way of deployment! We now deploy manually to surge instead. Creates the regular build and pushes to the repositories gh-pages branch afterwards.

yarn run analyze:app

Runs the source-map-explorer and displays its results inside the browser. This analyzes only app data. node_modules are skipped.

yarn run analyze:vendor

Runs the source-map-explorer and displays its results inside the browser. This analyzes only vendor data. app data is skipped.

Docker Setup

This project can also be deployed via docker-compose.

Simply run docker-compose up -d inside the docker folder. Open http://localhost:8080 to view it in the brwoser.

For further instructions regarding docker or docker-compose please refer to the official documentations of docker or docker-compose

Using types and data in other apps

The typings and all of our aeons end data are part of this mono-repository. However we publish both separately to npm, so they can be easily consumed by other applications and libraries.

TODO - writing client side migrations

aeons-end-randomizer's People

Contributors

a-wiacek avatar dependabot[bot] avatar elmodor avatar gmenuel avatar gusti23 avatar jannydiamond avatar kubajastrz avatar kyoshim avatar milanthehawk avatar on3iro avatar sarathas avatar toorain avatar torgen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

aeons-end-randomizer's Issues

Integrate Redux

The app is starting to become rather complex. I think we should probably integrate redux soon, to make state handling a lot more explicit.

Add a way to add storage keys to sets ("where are all my cards")

We currently always show which expansion a Nemesis/Mage/Card belongs to.
It would be cool to be able to provide a storage key to each expansion inside the settings.
If such a key has been provided by the user, we will show it instead or additionally of/to the expansion.

That way the user does not need to remember that they have stored Xaxos and Brama inside a sock under their kitchen table...

Add missing turn order setups

  • Turnordersetups:
    • alternate Wild setup with token
    • 1/3 2/4 (or was it 1/2 3/4?) cards
  • Blitz Card (Buried Secrets)
  • Malestromcard (Legacy)

If no standalone set is selected, provide link to settings

We currently just show a simple component, which contains a hint that the users needs to select at least one stand alone expansion inside the settings.

We should additionally provide a "link" to the settings. (meaning some clickable text, which triggers the routing step)

Migrate away from Mui

Why

  • The markup generated by Material-UI is quite ugly
  • Performance is underwhelming
  • Extending styles is awkward
  • API is not intuitive to use

Proposal

Lets switch out Mui-components with our own custom styles components.
This could be done step by step.
That way we could also lower our bundle size.

Add exhaustive README

NOTES

  • Keep CRA-Information
  • Add CI-Badges
  • add PUBLIC_URL env-var tipp for better local PWA testing
  • Add contrib guidelines
  • Add app description
  • #95

Snackbar with new update infos

We could save the version number inside indexedDB and display a snackbar, whenever the version number changes. The snackbar could contain a link to the github release-page, so that the user can easiliy see what the update brought.

Add PWA features

  • Add basic manifest
  • Add service worker features to save user settings

Thought: Maybe we should persist the currently generated items as well, to prevent them from being deleted on a pull-down-refresh in chrome

Add creation of custom market setups

TODOs

  • Add supply selection to settings
  • Add custom supply tab with checkboxlist
  • Add addSupply-button
  • Operations:
    • Add -> isNew: true, isDirty: true
      • Automatic ID creation
    • Edit -> isNew: false, isDiry: true
      • Name Input
      • addCard:
        • Type, operation, threshold/values, cost
    • Save
    • Cancel
    • Delete
  • Manage edit in local component state and only commit changes to redux on save
  • Show supply (some kind of Preview)
  • save custom supplys to indexedDB
  • fetch custom supplys and setup config
  • Read from selection
  • Fix bug that causes to evaluate supply order wrong (e.g. relic is first blueprint, but shown as last in supply)
  • Styling

Find a way to rate market setups and advice the user

I am not sure how useful this feature actually is. But the idea ist interesting. For a bit more background, read this comment form BGG user Leigh Hathaway:

Firstly, they advise that based on their code some of the legacy cards are rated as either too weak (Ia, Id, II) or too strong (V, VI and VIII). 
Maybe there's a way you could inform users whether they have random selected a hard or easy supply deck based on the legacy cards included.
Secondly, Legacy introduced the Pulse mechanic which is powerful when combined with a couple of other Pulse objects but maybe too weak if a single Pulse item comes up.
Maybe users could choose a Pulse strong hand or no Pulse cards?

Bug: Current card selection visible in market setup after changing setup

Setup: In the Supply tab, after creating a market with any setup, the market setup template is changed by the user (via the drop-down menu).

Expected behavior: All current market cards are cleared and the new template is shown.
Actual behavior: The new template is shown, but the market from the (now deprecated) market template is still visible. This creates an inconsistent view.

Please clear the market cards after the setup is changed.

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.