All Projects → JarrodMalkovic → auction-website

JarrodMalkovic / auction-website

Licence: Unlicense license
🔨 A full-stack real-time auction website built using a microservices architecture

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to auction-website

Spree gateway
Huge collection of payment gateways for @spree. Stripe, Braintree, Apple Pay, Authorize.net and many others!
Stars: ✭ 180 (+153.52%)
Mutual labels:  stripe
Omnipay Pingpp
A Ping++ driver for the Omnipay PHP payment processing library. 一个聚合了支付宝(APP、Wap、PC、即时到账、扫码、企业付款),微信(APP、公众号、红包), 银联网关、银联企业网银、Apple Pay、QQ 钱包、易宝支付、百度钱包、京东支付、京东白条、招行一网通、分期支付等国内主流支付渠道的聚合支付网关(Ping++, also known as Pingpp/Pingxx/Pingplusplus)
Stars: ✭ 227 (+219.72%)
Mutual labels:  stripe
dapr-gbb-workshop
Details regarding the customer-ready Dapr workshop created by the Microsoft Cloud Native Global Black Belt Team
Stars: ✭ 27 (-61.97%)
Mutual labels:  microservices-architecture
Limestone
Boilerplate Rails 6 SaaS application with Webpack, Stimulus and Docker integration.
Stars: ✭ 191 (+169.01%)
Mutual labels:  stripe
Subscription Use Cases
Create subscriptions with fixed prices or usage based billing.
Stars: ✭ 215 (+202.82%)
Mutual labels:  stripe
Python For Entrepreneurs Course Demos
Contains all the "handout" materials for Talk Python's Python for Entrepreneurs course. This includes notes and the final version of the website code.
Stars: ✭ 247 (+247.89%)
Mutual labels:  stripe
Memberprism2
open source alternative to memberstack / memberspace , but with both front and backend member-only content protection
Stars: ✭ 171 (+140.85%)
Mutual labels:  stripe
switchboard-plug-wallet
Manage Payment Methods and related settings
Stars: ✭ 17 (-76.06%)
Mutual labels:  stripe
Test Payment Cards
Cheatsheet of test payment cards for various payment gateways
Stars: ✭ 217 (+205.63%)
Mutual labels:  stripe
garuda
Automagically Exposing Django ORM over gRPC for microservices written in any other languages
Stars: ✭ 22 (-69.01%)
Mutual labels:  microservices-architecture
Stripe
Typed .NET clients for stripe.com REST APIs
Stars: ✭ 193 (+171.83%)
Mutual labels:  stripe
React Express Stripe
💰 Minimal Boilerplate for Stripe used in React and Express. Charge payments from your customers with this project.
Stars: ✭ 209 (+194.37%)
Mutual labels:  stripe
Builderbook
Open source web application to learn JS stack: React, Material-UI, Next.js, Node.js, Express.js, Mongoose, MongoDB database.
Stars: ✭ 3,015 (+4146.48%)
Mutual labels:  stripe
Stripe Billing Typographic
⚡️Typographic is a webfont service (and demo) built with Stripe Billing.
Stars: ✭ 186 (+161.97%)
Mutual labels:  stripe
mooa-boilerplate
microfrontends framewrok mooa's boilerplate.前端微服务化框架 Mooa 脚手架示例
Stars: ✭ 30 (-57.75%)
Mutual labels:  microservices-architecture
Django Ecommerce
Ecommerce website built with Django 2.2.3, Python 3.7.3, Stripe and AWS
Stars: ✭ 173 (+143.66%)
Mutual labels:  stripe
Stripe Node
Node.js library for the Stripe API.
Stars: ✭ 2,887 (+3966.2%)
Mutual labels:  stripe
accept-a-card-payment
Learn how to accept a basic card payment on web, iOS, Android
Stars: ✭ 348 (+390.14%)
Mutual labels:  stripe
spring-microservices
🌱 Simple Microservice Architecture based on Sagas and CQRS patterns
Stars: ✭ 52 (-26.76%)
Mutual labels:  microservices-architecture
awesome-software-architecture
A curated list of awesome articles, videos, and other resources to learn and practice software architecture, patterns, and principles.
Stars: ✭ 1,594 (+2145.07%)
Mutual labels:  microservices-architecture

A Full Stack Auction Website

Tech logos

📝 Table of contents

Features

  • Real-time bidding on auction listings between users using Socket.IO
  • Server-Side Rendering using React and Next.js
  • Styled frontend using Tailwind CSS with Emotion Styled Components
  • Automated testing suites for each microservice
  • Handles payments using the Stripe API
  • Shares common code among services using a custom npm package

🏛️ Architecture

Diagram

Overview of services

Service Technologies Description
Auth TypeScript, MySQL Handles user regristration, logging in, signing out and resetting users passwords
Bids TypeScript, MySQL Handles users placing bids on auction listings and allows for real-time bidding using Socket.io
Email TypeScript Allows other services to send emails to users by publishing EmailCreated events
Expiration TypeScript, Redis Expires auction listings once they have ran out of time remaining on the listing
Frontend TypeScript, React, Next.js Handles serving the website to the user utilizing Server Side Rendering using React with Next.js
Listings TypeScript, MySQL Allows users to create and delete auction listings
Payments TypeScript, MySQL Allows users to pay for auction listings they have won
Profile TypeScript, MySQL Allows users to get a users profile or update their own

📸 Screenshots

desktop-listings-page desktop-listing-page desktop-dashboard-page desktop-settings-page

💻 Technologies

Back-end

  • Node.js - Runtime environment for JS
  • Express.js - Node.js framework, makes process of building APIs easier & faster
  • MySQL - An open-source relational database management system
  • Sequelize - A promise-based Node.js ORM for Postgres, MySQL, MariaDB, SQLite and Microsoft SQL Server
  • Cloudinary - For image uploading and manipulation
  • Docker - A platform for developing, shippinh and running applications
  • Kubernetes - An open-source system for automating deployment, scaling, and management of containerized applications
  • Ingress NGINX - NGINX Ingress Controller for Kubernetes
  • Skaffold - Handles the workflow for building, pushing and deploying applications
  • Stripe - Online payment processing for internet businesses
  • Jest - A JavaScript testing framework

Front-end

  • ReactJS - Frontend framework
  • Next.js - React framework that enables server-side rendering
  • Tailwind CSS - A utility-first CSS framework
  • Emotion - CSS-in-JS library designed for high performance style composition
  • Formik - React framework for building forms
  • Yup - A form validation library

📙 About this Project

This project is a rewrite of a previous monolithic auction website I wrote. The repository for my monolithic auction website can be found here. The purpose of this rewrite was to gain experience utilizing a microservices architecture after completing Stephen Griders course on Microservices.

🚀 Local Development

Clone the respository locally

git clone https://github.com/jarrodmalkovic/auction-website.git

Edit your hosts file

127.0.0.1 auctionweb.site

Install ingress-nginx

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.44.0/deploy/static/provider/cloud/deploy.yaml

Create the required kubernetes secrets

  • Create the JWT_KEY secret
kubectl create secret generic jwt-secret --from-literal=JWT_KEY=<Your Secret Here>
  • Create the MYSQL_ROOT_PASSWORD secret
kubectl create secret generic mysql-root-password-secret --from-literal=MYSQL_ROOT_PASSWORD=<Your Secret Here>
  • Create the EMAIL secret
kubectl create secret generic email-secret --from-literal=EMAIL=<Your Secret Here>
  • Create the EMAIL_PASSWORD secret
kubectl create secret generic email-password-secret --from-literal=EMAIL_PASSWORD=<Your Secret Here>
  • Create the STRIPE_KEY secret
kubectl create secret generic stripe-secret --from-literal=STRIPE_KEY=<Your Secret Here>
  • Create the CLOUDINARY_API_KEY secret
kubectl create secret generic cloudinary-api-key-secret --from-literal=CLOUDINARY_API_KEY=<Your Secret Here>
  • Create the CLOUDINARY_CLOUD_NAME secret
kubectl create secret generic cloudinary-cloud-name-secret --from-literal=CLOUDINARY_CLOUD_NAME=<Your Secret Here>
  • Create the CLOUDINARY_API_SECRET secret
kubectl create secret generic cloudinary-api-secret-secret --from-literal=CLOUDINARY_API_SECRET=<Your Secret Here>

Start skaffold

skaffold dev

Open the project in your browser

  • The project will now be available locally on the domain auctionweb.site in your browser. If you are using Google Chrome you may have to type "thisisunsafe" while on the page to bypass a security warning

⚖️ License

This project is licensed under the Unlicense License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].