nile-mithril
v1.0.3
Published
Nile-mithril - Online Bookstore based on nile-server
Downloads
7
Readme
Nile-mithril - Online Bookstore
This is an online bookstore written on mithril.js framework, based off nile-server
. This bookstore app demonstrates all aspects of online shopping, such as user authentication, shopping history, inventory tracking, product search etc.
Running the App
Check out Demo on AWS.
This app works in tandem with nile-server
. nile-server runs the backend, while this app runs as the frontend.
Type the following to run nile-server on port 3570:
npx nile-server
Do the following to run nile-mithril on your browser:
- clone this git repo
- go to cloned repo directory
npm install
to install dependenciesnpm run dev
to run it in dev mode
Features
- true multi-user environment
- server persistence of transactions
- shopping cart persistence across sessions
- shopping history tracking
- product searching
- real-time inventory checking and warning
Directory Structure
This application is created using create-mithril-app
. It has two main folders:
client
- Javascript codepublic
- index.html, css, and images
Architecture
This app uses route-based
architecture. Each route represents a page, and has its own state. This architecture reduces dependencies between different parts of the application, and prevents exponential complexity growth as the application becomes larger.
Some state has to be shared between pages, such as user login session. This information is stored as a singleton object in file modelactions.js
. Leveraging the module system, this file can simply be imported and used by every component. This avoids the tedium of passing state objects down the hierarchy tree.
Interact with nile-server
nile-server
's API is mostly simple JSON CRUD operations, with some querying capabilities to tie different resultsets together. This simplicity makes consuming the API pretty straightforward.
To Do
- replace window alerts with modal message boxes
- refactor