I built this storefront a while back to test out some ideas and also to see where Meteor was at in terms of maturity etc. I was impressed.
Building things with Meteor is a lot of fun. There are a number of packages that support the development process and , all in all, the conceptual density of the whole thing is kind of low.
Have a look through the code - it all works - just add some products, a set of StripeKeys and off you go!
Pull the source from this repo (or just download it), and then:
- Reset the
settings.json
andsettings.development.json
files - Remove the test data/imagery and replace with your own
- Update the
mup.json
with your deployment settings
And you're off. The app currently stores order data in Postgres (I don't trust MongoDB, for no good reason. Also, I just like Postgres) and for that you'll need to create your checkout table:
drop table if exists checkouts;
create table checkouts(
id serial primary key,
reference_key uuid not null,
cart_id varchar(50) not null,
created_at timestamptz not null default now(),
email varchar(255) not null,
name varchar(255) not null,
ip inet not null default '127.0.0.1',
country_code varchar(2) not null default 'US',
description varchar(255),
items jsonb not null,
billing_address jsonb,
shipping_address jsonb,
total decimal(10,2) not null default 0,
terms_accepted boolean default false not null,
processor varchar(20) not null default 'stripe',
token jsonb,
payment_details jsonb not null
)
Please note: jsonb
support is only in Postgres 9.4+. If you need to use a lower version, change the datatype above to json
.
Installing Postgres on Ubuntu 14.10 is recommended:
sudo apt-get update
sudo apt-get install postgresql-9.4
su postgres && cd
createdb [your db name]
psql [your db name]
#paste the create script above here
CREATE ROLE [your db user] WITH PASSWORD [your password];
GRANT ALL ON DATABASE [your db name] to [your db user];
ALTER TABLE checkouts OWNER TO [your db user];
\q
exit
exit
If you know how to install Postgres already - go with what you know :).
I work for Pluralsight and like to create screencasts about the things I'm working on - and I did that for this project. You can watch it here.