CraftSpot is a place for you to keep track of your favourite craft spots i.e. shops, exhibitions, classes and more. Sign up and make a list of your favourite crafts, then delve a little deeper and save details of where you can find the best yarn, knitting classes, sewing workshops etc. Keep all this info in one place so you can come back to it any time.
This project has been updated for use as a backend api with a svelte frontend created separately.
- node.js,
- Hapi
- Handlebars
- MongoDB
- Mongoose
- Cloudinary
- Glitch
- Heroku
- Git/GitHub
- JWT
- Joi
- Bulma
- Fontawesome
- Chai
- Mocha
- Swagger
- Svelte
- Leaflet
- Frappe Charts
- Heroku : https://limitless-cliffs-75212.herokuapp.com/documentation
- AWS: http://18.206.159.230:4000/documentation
- Netlify (Frontend svelte application using placemark API) : https://craftspot-svelte.netlify.app/
- CRUD Functionality for user, craft and spot details.
- Upload/delete image functionality on Spot View page for multiple images.
- Gallery page with all Spot images included.
- Admin User can see data analytics and user list. Can delete a user.
- API Endpoints and Tests.
- JWT Security.
- Database Seeding.
- Security features such as sanitization and hashing and salting of passwords.
- Charts showing relevant application data.
- Spots (POIs) shown on a map, with map layers based on categories.
Possible future additions:
- Allow a user to list and track their craft projects.
- Allow a user to their Spot locations on a map. (Now included)
- Allow all users to see all available locations (list/map). (Now included)
Helpful online resources used in this project:
- https://github.com/antoniogiordano/hacli - admin authorization (rbac).
- https://www.npmjs.com/package/hapi-error?activeTab=readme hapi error plugin.
- https://bulma.io/documentation/form/select/ Bulma use of select option for categories drop down menu.
- https://mongoosejs.com/docs/api.html#query_Query-lean Mongoose lean documentation.
- https://cloudinary.com/documentation/image_upload_api_reference Accessing cloudinary public_id for use in delete functionality.
- https://akhromieiev.com/tutorials/using-cors-in-hapi/ CORS in Hapi