store url : zivero-store.netlify.app
admin url : zivero-admin.netlify.app
Zivero is an ecommerce engine and developed using start of art methodologies and tools.
I have created this software from scratch as the only developer involved . while help has been taken a lot from google and other communities , We in the below paragraphs solely refers to me and my code .
What Problem It Solves .
Having a beautiful and functional store front accompanied with a powerfull and robust adminstration app , should not be too much to ask for a small vendor . Keeping that in mind i tried to make zivero solve this problem by creating a robust and intiuivative eccomerce engine .
Defining a Minimum Viable Product
As the Goal became clear . I began hunting the requirments . like with most software products the requirements are never at the same place ,I thought to model a MVP to iterate upon .
Features of the mvp
Store Front :
- Product Catalogue
- Online Payments
- CRUD operations for Models
- Order fullfilment
The Project has been basically developed around the client - server architecture .communicating over http using Graphql .
The Server is written primary in python and using the Django Framework . I chose grahql as the api interface because the application was intensively using selective data from multiple resources , implementing the same using Restfull apis could lead to bottlenecks in performance.
The Frontend has been created using Vuejs . I have used the appolo libs for graphql as http client . the state is decoupled from the app using vuex .
We are using redis for caching and as in memory database for cart session . which are later persisted on authentication .
The authentication architecture has been created to be stateless . which has been implemented using jwts and tokens .
The Persistance layer consists of using MongoDB as the primary database performace critical documents like Carts. Wishlisht and Products . and Postgresql has been strictly used for all transactional and relational stuff
The Payments and refunds are managed using Stripe as The primary payment gateway .
Creating a Mission Critical Search Engine
Having the ablilty to search a large catalogue of products is a very important task for an eccomerce software . While the definition of large differs across defferent vendors. So the basic job is not implementting a system for 100 or a Million records . but in way we can scale easily across different levels .
I implemented the search using mongodb Atlas search , than the usual suspects like elastisearch or solr . as we are already using mongodb for storing products . implementing a autocomplete and fuzzy search is a lot more intiutuive using atlas search .
UI and Frontend .
As I am not an Ui/Ux designer the design the design for the store is put together by taking inspiration from a few eccomerce site like amazon, myntra and shofify .
The meat part is putting that ui/ux design into a functional and responsive frontend . the frontend for both store and admin has been created using vuejs . Vuejs has proven to be a blessing specially when developing data intensive and input components for the site .
i have used tailwindcss for the admin and vuetify as the component library fro store front.
Project Structure and Version Control Flow .
the project began as each part like admin , store_fronn ,etc being separate git repo . but as the the project gradually grew . managing and sharing resources between different repsos becomes pretty cubersome . so , I adopted the Mono repo architecture . For the Version Control workflow i use Trunk based workflow .with only one primary branch . the repo is hosted on github .
I am managing the monorepo using turbo repo and yarn workspaces
Deploys And CI/CD
the backend is currently hosted for free on heroku and frontend as mutilple sites on netlify. the project is not tied to any specific vendor and can be migrated to any other service at zero aditional cost ,other than vendor specifuc configuration and stuff .
we are currently using github as the CI/CD pipline