My First Project: A personal Ecommerce Website
Tags: beginners, webdev, python, django
Published: 2022-11-13 12:37:35

Whoopssss: I built my first project as a developer..

This Project took a little over a month to conceptualize and complete.

The Tech stack used are: Python, Django, Postgres, HTML, CSS, JavaScript, AWS, Heroku.

Now down to the functionalities and features of the website

- User Authentication and Authorization:
Users can decide to create an account with their google, Facebook, Twitter account(I used **Django allauth** for this and the third party API’s) or users can just create an account with an email. Once user is logged on, they won’t have access to to login/signup page.
Additionally, there is logic that enables Users who choose not to register to still go on with business.

![User Auth](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5vowl66aegaylnimfcjl.gif)

- Add to Cart and Checkout: 
Users, both authenticated and unauthenticated, will be able to add and remove items from their carts before proceeding to checkout.
A cookie was used to handle the checkout and cart page for an unauthenticated customer. Even if they leave the page for a while, their cart will still be intact.

![Add to cart](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cwf5y2df9z91p0nex8pd.gif)

- Payment Integration:
Payments can be made using a debit card or a PayPal account (I initially used paystack which worked perfectly , but I wanted something more universal). I am still looking at how to add more than one payment platform.

![payment](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/364ktplapx30s1j9fgbr.gif)

- Visitors can subscribe to a newsletter by entering their name and email address, and the data is collected in the backend. There is also a functionality that checks if the email has already been used.

The Product Collections page is dynamically rendered, and I plan to add dynamic product details pages for each product later.

**Challenges Faced**: 

- The first issue was that after creating a customer / user, the customer was unable to access the collections, checkout, and cart page. I keep getting this error **RelatedObjectDoesNotExist**. After reading various documentation, research, and thinking, I finally conquered It in 3-4 days, with the solution being as simple as one line of code. I only had to create and assign the user.

- Postgres and AWS: It took me three days to finally get this thing. Postgres keeps giving server connection  error. AWS free tier charged my card I don’t know why(the small money I was managing)

- There are many other challenges but let’s us leave it at this.

Well building this project really taught me what really happen on the backend. I can now say that building a project will really teach you a lot.. enough of blazing through tutorials, start building and make research.

**Next Project** should either be a portfolio website, CRUD app or Payroll management system(I was formerly an HR so this will be fun). 

You can follow me on [Twitter](https://twitter.com/AkoladeSoft)

Also check out my github profile: [emmakolade](https://github.com/emmakolade)

Thank you for reading through.