Code Monkey home page Code Monkey logo

digitalpalireader's Introduction

Build Status Release Status

Digital Pāli Reader

The Digital Pāli Reader is a tool much like a hard-copy language reader. The tool includes the Pāli canon and related scriptures. It includes multiple dictionaries to facilitate reading the scriptures. In addition to enabling an immersive experience for the study of the Tipitaka, it is also useful in the study of the Pali language at an advanced level. The Digital Pāli Reader is used by Buddhist monks in their Pāli studies, at Universities around the world and by lay users for study at home.

Current backlog is maintained here.

Build and test instructions

To get DRP running on the local machine:

  1. Install live-server: npm i live-server -g
  2. Run live-server in root folder: live-server
  3. Browse to http://localhost:8080

Working effectively with legacy code

The current codebase has organically evolved since the last decade. Every piece of code implements some critical functionality.

For the following reasons working with the code base is tricky:

  • Lots of students, professors, monastics depend on DPR for their day to day work.
  • Code and markup aren't cleanly separated, special care must be taken to not break stuff when changing the code.
  • Manual testing process are not yet streamlined.

Over a period of time with care and above infrastructure support (linters, prettiers, testing processes), the code base will evolve to be much easier to change.

Here is an excellent book for techniques for working effectively with legacy code.

Guidelines for contributions

This is a 'live' section. Feel free to suggest amendments through PRs.

  1. DO reuse existing code. Remember that features that are being ported over from XUL to Web are already working.
  2. DO make only the minimum changes necessary for implementing features, fixing bugs. VSCode will auto format those changes as per .editorconfig and other settings.
  3. DO abstract out HTML ids behind PAL interface. E.g. DPR_PAL.getDifId();
  4. DO ask for buddy testing.
  5. DO test all scenarios (TBD: Link to manual test scenarios that every commit must pass)
  6. DO resolve all PR comments through discussion.
  7. DO follow the project conventions for all new code: ES6, jQuery, HTML5, CSS3, Bootstrap.
  8. DON'T bulk format files. This makes it very hard to trace the exact changes in case a revert is required.
  9. DON'T do non-trivial refactoring. It becomes hard to track changes across commit and revert selectively when necessary.
  10. DON'T change HTML class names or ids. It is hard to tell which is being directly referenced form the code.

Upcoming Infrastructure support to make codebase easy to change

  • Linters.
  • Unit tests.
  • Effective manual testing process.

Useful links

digitalpalireader's People

Contributors

yuttadhammo avatar parthopdas avatar smkvr98 avatar johnwang16 avatar dangeol avatar cesiumetta avatar sumbodhi avatar placoderm avatar annieefu avatar dpradmin avatar marcusgaleotti avatar snuniverse avatar

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.