Alpha release - Please report any bugs
ExpressCart is a Shopping Cart built with Nodejs and ExpressJS. The application uses an embedded database (nedb) for easy installation. The application is designed to be easy to use and install and based around search rather than nested categories. Simply search for what you want and select from the results. ExpressCart uses powerful Lunr.js to index the products to enable the best search results possible.
Demo: http://expresscart.mrvautin.com
- Clone Repository:
git clone https://github.com/mrvautin/ExpressCart.git && cd ExpressCart
- Install dependencies:
npm install
- Start application:
npm start
- Go to http://127.0.0.1:7777 in your browser
- Install from NPM:
npm install expresscart
- Move folder from
node_modules
:mv node_modules/expresscart/ ./ExpressCart
- Enter folder:
cd ExpressCart
- Install dependencies:
npm install
- Start application:
npm start
- Visit http://127.0.0.1:7777 in your browser
- PayPal: ExpressCart has built in PayPal Express Checkout.
- Seach: ExpressCart is a search based Shopping Cart backed by Lunr.js indexing to create the best possible results on searches.
- Backend: ExpressCart uses the pure javascript nedb embedded database. This means no external databases need to be setup.
- Design: ExpressCart is meant to be simple flat design.
- Responsive: ExpressCart is built using Bootstrap allowing it to be responsive and work on all devices. The
admin
can be a little difficult editing Markdown on smaller screens.
Visit: http://127.0.0.1:7777/admin
A new user form will be shown where a user can be created.
There are are a few configurations that can be made which are held in /config/default.json
. If any values have been changed the app will need to be restarted.
Paypal details can be obtained by logging into your PayPal account.
cart_title
refers to the title shown on the top of your cart navigation menu. If you would like a logo in it's place you will have to edit the/views/layouts/layout.hbs
.number_products_index
refers to the amount of products shown on the homepage of your cart.base_url
refers to the URL of your cart. Note: Ensure there is no trailing slashflat_shipping
refers to the flat shipping rate if the total card amount is less than the value set infree_shipping_amount
.free_shipping_amount
refers to the minimum spend for a customer to receive free shipping. If free shipping is never offered, set this value to something really high. Eg: 9999999.00paypal_username
refers to the value obtained from your PayPal account loginpaypal_password
refers to the value obtained from your PayPal account loginpaypal_signature
refers to the value obtained from your PayPal account loginpaypal_cart_description
refers to the value shown to the user when redirected to the PayPal payment pagepaypal_currency
refers to a valid currency to accept payments. PayPal does the conversion
Example config file
{
"application": {
"cart_title": "ExpressCart",
"number_products_index": 8,
"base_url": "http://localhost:7777",
"flat_shipping": 10.00,
"free_shipping_amount": 100.00,
"paypal_username": "sandboxusername.gmail.com",
"paypal_password": "4913720873",
"paypal_signature": "RF0gpHVXEWAFcWxV7LmcPrNwnk7R3bYYYRCpSSR21C7fd0vWMlDl31Ah",
"paypal_cart_description": "ExpressCart Payment",
"paypal_currency": "USD"
}
}
By default ExpressCart
uses the flatly Bootswatch
theme. This can be quickly changed by commenting/uncommenting other themes in /views/layouts/layout.hbs
to the desired theme.
Looking for help to develop the software further. There isn't any good Nodejs shopping cart software and ExpressCart could fill the void. Please submit any issues and pull requests to make this better. Looking for anyone with security experience to cast an eye over and pickup and issues.
- Email receipts
- More flexible shipping options/estimate etc
- SEO improvements
- Social sharing
- UI improvements
Using PM2 is the easiest and best option for running production websites. See the PM2 for more information or a short guide here: https://mrvautin.com/running-nodejs-applications-in-production-forever-vs-supervisord-vs-pm2/.