habitica/website/client
negue f548103f4c fixes Tasks UI (#11036)
* show grabbing cursor while dragging

* 40px height search + tags button

* remove margin of task-title markdown-p-tag

* remove pointer on disabled task-controls

* show `Options` instead of  `Show More`

* remove margin of checklist items

* remove space between notes and checklist
2019-03-03 17:28:58 +01:00
..
assets chore(monthly): announce Challenges, end potions 2019-03-01 16:22:19 -06:00
components fixes Tasks UI (#11036) 2019-03-03 17:28:58 +01:00
directives Fix difficult to edit checklists in Firefox (#9525) 2017-11-27 19:43:24 -06:00
filters improves rounding for boss hp and player pending damage - partial fix for #8368 (#9749) 2018-03-31 12:57:37 +02:00
libs Hotfix: correct issues from PRs rollout (#10993) 2019-02-15 16:01:33 -06:00
mixins Payments: Success Messages (#10903) 2018-12-09 20:08:01 +01:00
router Implement URL handling for profile modal (#10844) 2019-02-07 17:25:30 +01:00
store Merge branch 'develop' of https://github.com/HabitRPG/habitica into negue/flagpm 2019-01-27 18:14:51 +01:00
.babelrc Client: Header & Menu & Icons (#8770) 2017-06-08 12:04:19 -07:00
.eslintrc Client: i18n (#8972) 2017-08-22 18:26:53 +02:00
app.vue fix(sprites): load new spritesheet in Vue 2019-02-08 06:06:58 -06:00
index.html Added smartbanner code to suggest iphone/android apps for mobile users - fixes #9901 (#10604) 2018-08-24 15:08:34 -05:00
main.js paypal: new redirects 2018-11-21 11:19:55 +01:00
README.md changed wikia links to fandom 2019-01-24 11:21:52 +00:00

Running

For information about installing and running Habitica locally, see Setting up Habitica Locally.

Preparation Reading

  • Vue 2 (https://vuejs.org)

  • Webpack (https://webpack.github.io/) is the build system and it includes plugins for code transformation, right now we have: BabelJS for ES6 transpilation, eslint for code style, less and postcss for css compilation. The code comes from https://github.com/vuejs-templates/webpack which is a Webpack template for Vue, with some small modifications to adapt it to our use case. Docs http://vuejs-templates.github.io/webpack/

  • We're using .vue files that make it possible to have HTML, JS and CSS for each component together in a single location. They're implemented as a webpack plugin and the docs can be found here http://vue-loader.vuejs.org/en/

  • SemanticUI is the UI framework http://semantic-ui.com/. So far I've only used the CSS part, it also has JS plugins but I've yet to use them. It supports theming so if it's not too difficult we'll want to customize the base theme with our own styles instead of writing CSS rules to override the original styling.

The code is in /website/client. We're using something very similar to Vuex (equivalent of React's Redux) for state management http://vuex.vuejs.org/en/index.html

The API is almost the same except that we don't use mutations but only actions because it would make it difficult to work with common code

The project is developed directly in the develop branch as long as we'll be able to avoid splitting it into a different branch.

So far most of the work has been on the template, so there's no complex logic to understand. The only thing I would suggest you to read about is Vuex for data management: it's basically a Flux implementation: there's a central store that hold the data for the entire app, and every change to the data must happen through an action, the data cannot be mutated directly.

For further resources, see Guidance for Blacksmiths, and in particular the "Website Technology Stack" section.