A PWA website for connecting patients with alternative medicines and dispensaries
Build a personal web app using:
-
Backend
- Websocket as the application server
- PostgreSQL as the database server
- Bookshelf.js as the ORM
- passport.js for Authentication and Authorization
-
Frontend - React.js or AngularJS as FE framework - Sass for styling - Webpack for bundling, provided by FE generator.
-
Stretch Add-ons Some stretch and polish goals will use additional technologies. - AWS S3 for storing product images - mailgun or sendgrid for sending email
The web app will provide local dispensaries with a quick and easy way to update and maintain inventories, serve listings of alternative medicines to patients and customers based on their preferences and location, and provide communications channels to connect patients and customers with dispensaries or with their doctors and therapists.
The backend should provide RESTful api endpoints. The frontend should be a SPA (Single Page App) that provides a smooth user experience.
You will need to work as a team to complete this project. To facilitate team communication you will be using Trello to track tasks and stay on track.
The instructors will provide a tech lead role, and will need to approve design and implementation decisions. Data modeling will need to be done by the team, but approved by the tech leads.
- Home page should list products by dispensary and by condition
- Home page should provide a way to filter by dispensary and by condition
- Home page should show a subset of key details of the products, along with one image.
- Home page should have a login button.
- Should be able to view the same home page and details that an unauthenticated user can.
- Should be able to chat or email with dispensaries and their own doctors or therapists.
Userhome page should contain: - A way to add newItems. - A way to logout. - display the currentUsersname - List view of publishedItems. - List view of soldItems.- Add new
Itemshould present theUserwith a form to add allItemdetails. - A newly addedItemshould have a status of published when created. - The form should provide validation and feedback if inputs in omitted or invalid. - Should be able to select an image and upload it for theItem. Itemdetail owned byUser: - Should be able to modify all inputs. - Change the Status of theItem. published or sold - Should be able to replace the image associated with theItem.- When an
Itemis published it should record the publish date and time. - When an
Itemis modified it should record the update date and time. - The
UserSettings view should provide theUsera way to change their password.
- The application should display a logo.
- Mobile friendly application. Styles should work from phone up to desktop.
- Clicking on an
Itemin any list, should display the detail view of thatItem. Itemsshould not be able to be deleted, but should have a status option that is equivalent.- Should have a registration page to allow the creation of new
Users. -Usersshould register using email. - Any information that can identify a user should not be available to any otherUser.
- Should be able to generate a share link to a specific item.
- Should be able to change the view between grid, list, thumb views.
- Should be able to view more than one image related to an
Item. - Home page should have at least one filter. To filter out
Itemsfrom the view.
- Add home view option to show featured*
Items, based on how many views theItemhas had. - List of
Itemscurrently published for sale. - List of
Itemspending publishing. - Should provide a quick way to publish theItem. - List of
Itemsin other state, (sold, archived) - Should have access to a
Messagesview that allows anonymous communication between authenticatedUsersbased on a publishedItem. - The
Itemdetail view should provide a way for theUserto send a message to theUserwho published theItem. - Should see a count of how may times the
Itemhas been viewed and if theItemis currently featured. - Home view should have a way for the
Userto hideItemsthey are not interested in and a way to restore all items being visible.
- should be able to create new admin accounts
- should be able to make user inactive
- CRUD for categories
- should be able to ban a product sale
- CRUD for statuses
- CRUD for conditions
- should be able to send messages to any user
- Add Role table. Set application access based on role.
- Add more states for
Item. Pending, Published, Sold, Archived, Pulled. - Add unit tests
Messageswill only be allowed by originating from anItem- Admin
User - When
Itemdetails are viewed by anyone other than the owner, it should count the view, to track whatItemsare most popular.
- should be able to search for keywords
- pagination
- should see a visual indicator if an item is getting a lot of views, is featured.
- should verify email
- images should be stored in S3
- should be able to contact seller through
- can send email to a hashed email (eg. 600a8cd20d@c99.team-one.consumemorestuff.com ) that will forward to registered user
- should be able to see generalized area for the item (geo-location)
- should be able to contact all or individual users
- messages
- make prettier
- integrate email service (mailgun, sendgrid)
- add supertest tests