Tacoma Consignment is a "brick-and-mortar" retail consignment business specializing in furniture and art. It is transitioning from a in-person based Quickbooks POS system to a joint online/in-person commerce system based on the following technologies:
- Shopify (eCommerce and POS)
- Stripe for consignor payout
- Azure SQL Server as master database and "source of truth" (open to discussion, but relational db preferred)
- Auth0 for identity management of:
- consignors
- customers
- store staff
- store admins
- Vuetify as a web front-end
- Segment for referral tracking and customer insights
- Axios for API management
- Mailchimp for email management and marketing campaigns
The core system needs to enable the following roles and activities:
- Vuetify front-end based Store management single-page application including product onboarding with proper commission attribution and financial treatment of vendors and consignors
- Product creation page and product-image upload via Vuetify web front-end, published to Shopify
- Wishlist management via customer signup (Vuetify front-end) and product tagging on Shopify website
- Print QR-code based product tag with product description, price, sku on Zebra, Epson, or other wireless label printer
- Open-ended wishlist form analogous to product creation flow
- Customer signup flow that uses Auth0 Shopify and other social connectors (Google, Facebook, Amazon, and magic email links) to authorize customer, create an account in Azure and publish the results to appropriate Shopify and Mailchimp campaigns
- New accounts trigger appropriate discount assignments and Mailchimp campaigncustomer discount via mailchimp email signup
- Customer management including authentication via Auth0, referral tracking via Segment, and appropriate updating of relevant Mailchimp campaigns
- New consignor onboarding system, including invite system to transition existing merchants to new portal and payout alternatives
- commission structures
- active and sold products
- billing address
- PDF versions of contracts
- Vendor and consignor payout via automated payout on Stripe or manual checks generated from a PDF template and printed; Azure system must enforce proper accounting
- Synching transactions within and across systems:
- Products, consignors, and staff store management functionality within Azure
- Automated synchronization with Shopify via Webhooks
- Communicate with web front-end via Vuetify/Axios/Azure/Auth0
- Job execution of automatic discounting functionality
- Publishing and synching data to Shopify via Shopify REST (or Graph) API
The Tacoma Consignment SQL Server database is the source of truth for all data. To do so it has to also capture all the external transactions that occur in the Shopify and Stripe systems, as well as integrate into the Vuetify front-end to enable the management of the store.
First, clone this repo and switch into the repo folder:
git clone git@github.com:auth0-blog/vue-express-auth.git
cd vue-express-auth
Now you need to install the dependencies for the client and server code.
cd server
npm install
In a new terminal tab:
cd ../client
npm install
Now click into "Settings" and fill in some information that Auth0 needs to configure authentication:
Allowed Callback URLs — http://localhost:8080
Allowed Logout URLs — http://localhost:8080
Allowed Web Origins — http://localhost:8080
Scroll down and click "Save Changes".
Next, click on "APIs" on the left menu. Click "Create API" and call it "Vue Express API" (or anything you'd like). For "Identifier", we recommend a URL such as https://vue-express-api.com
. It doesn't have to be a publicly available URL and we'll never call it, it's just for naming purposes. You can leave "Signing algorithm" as is and then press "Create".
That's all you need from the dashboard for now, but don't click out yet. You'll need to pull some of these values from the dashboard into your application soon.
In the client
directory, create a file for the config values:
touch auth_config.json
Important: Make sure you add
auth_config.json
to your.gitignore
file!
Now open up auth_config.json
and paste in:
{
"domain": "your-domain.auth0.com",
"clientId": "your-client-id",
"audience": "https://your-identifier.com"
}
Finding your auth_config
values:
- Head to the Auth0 dashboard
- Click on "APIs" and select your API
- Copy the value for "Identifier" and paste it into
audience
inauth_config.json
- Click on "Applications" and select your application (Vue Events)
- Click on "Settings"
- Copy the value for "Domain" and paste it into
domain
inauth_config.json
- Copy the value for "Client ID" and paste it into
clientId
inauth_config.json
Now you should be able to sign in to the application, but you still won't be able to access single event details because you need to add this information to the server side where the API access token is validated.
Open up server/server.js
and find:
const authConfig = {
domain: "YOUR-DOMAIN",
audience: "YOUR-IDENTIFIER"
};
Replace the domain
and audience
placeholders with the values listed above.
Now that everything is set up, you can test the app.
Run the server
Make sure you're in the server
directory in your terminal and start the server with:
npm start
Server is running at http://localhost:8000.
Run the client
In your other tab, make sure you're in client
and run:
npm run serve
You can view the Vue app in the browser at http://localhost:8080.
You can now also sign in, receive an API access token, and view an event's details page at http://localhost:8080/event/1.
Be sure to check out the full tutorial to see how this process works.