{"id":22253967,"url":"https://github.com/devxbasit/fintransact","last_synced_at":"2025-03-25T12:26:40.823Z","repository":{"id":248131124,"uuid":"827479232","full_name":"devxbasit/FinTransact","owner":"devxbasit","description":null,"archived":false,"fork":false,"pushed_at":"2024-08-26T20:19:35.000Z","size":964,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-30T11:28:15.184Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devxbasit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-11T18:16:10.000Z","updated_at":"2024-08-26T20:19:39.000Z","dependencies_parsed_at":"2024-12-03T10:15:13.745Z","dependency_job_id":null,"html_url":"https://github.com/devxbasit/FinTransact","commit_stats":null,"previous_names":["devxbasit/fintransact"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devxbasit%2FFinTransact","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devxbasit%2FFinTransact/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devxbasit%2FFinTransact/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devxbasit%2FFinTransact/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devxbasit","download_url":"https://codeload.github.com/devxbasit/FinTransact/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245460794,"owners_count":20619141,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-03T07:21:24.868Z","updated_at":"2025-03-25T12:26:40.790Z","avatar_url":"https://github.com/devxbasit.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"#### NikeStore\n\nNikeStore is an **enterprise-grade microservice-based** web application built using clean architecture, Ocelot API gateway, RabbitMQ, Hangfire,\nJWT tokens, .NET Identity, MailKit \u0026 Entity Framework Core\n\n#### Overview view of the project:\n\nDesigned \u0026 implemented **6 microservices** responsible for authentication, order \u0026 email processing and shopping cart, product \u0026\ncoupon management.\n\n- **Integrated stripe payment gateway** with OrderAPI to handle customer order **payments \u0026 refunds**.\n- **Set up RabbitMQ** as the messaging broker for asynchronous communication between microservices.\n- Implemented ShoppingCartApi to manage customer **cart items, coupons \u0026 discounts**.\n- Implemented EmailAPI to process \u0026 **send emails in the background** using Hangfire, MailKit \u0026 RabbitMQ.\n- Implemented AuthAPI to hand **user registration, login \u0026 token generation** using JWT tokens \u0026 .NET Identity.\n- Implemented Ocelot API gateway to provide a unified entry point.\n- Configured **middleware pipeline** for functionalities like authentication, logging \u0026 global exceptional handling \u0026 CORS.\n- **Synchronised** all the coupon codes \u0026 discount amounts **with the stripe payment** gateway \u0026 the database.\n- Utilized EF Core for object-relational mapping \u0026 efficient database access.\n\n#### NikeStore - App Flow\n\n![nike-store microservice app flow](https://github.com/devxbasit/NikeStore/blob/master/ss/nikestore-app-flow.png)\n\n#### Registration\n\n![nike-store microservice app flow](https://github.com/devxbasit/NikeStore/blob/master/ss/register.png)\n\n#### Login\n\n![nike-store microservice app flow](https://github.com/devxbasit/NikeStore/blob/master/ss/login.png)\n\n#### Products Home\n\n![nike-store Products](https://github.com/devxbasit/NikeStore/blob/master/ss/ProductListHome.png)\n\n#### Product Details\n\n![nike-store Product](https://github.com/devxbasit/NikeStore/blob/master/ss/ProductDetails.png)\n\n#### Product Details\n\n![nike-store Product](https://github.com/devxbasit/NikeStore/blob/master/ss/ProductDetails2.png)\n\n#### Customer Cart\n\n![nike-store Cart](https://github.com/devxbasit/NikeStore/blob/master/ss/Cart.png)\n\n#### Checkout\n\n![nike-store Checkout](https://github.com/devxbasit/NikeStore/blob/master/ss/CheckoutSummary.png)\n\n#### Stripe Checkout page\n\n![nike-store Stripe Checkout](https://github.com/devxbasit/NikeStore/blob/master/ss/StripeCheckoutPage.png)\n\n#### Stripe Transactions\n\n![nike-store Stripe Checkout](https://github.com/devxbasit/NikeStore/blob/master/ss/StripeTransactions.png)\n\n#### Stripe Transactions Details\n\n![nike-store Stripe Checkout](https://github.com/devxbasit/NikeStore/blob/master/ss/StripeTransactionsDetail.png)\n\n#### Orders Grid Admin\n\n![nike-store Stripe Checkout](https://github.com/devxbasit/NikeStore/blob/master/ss/OrdersGridAdmin.png)\n\n#### Products Grid\n\n![nike-store Stripe Coupons](https://github.com/devxbasit/NikeStore/blob/master/ss/ProductsGrid.png)\n\n#### Products Add, Update\n\n\u003cp style=\"text-align: center;\"\u003e\n  \u003cimg style=\"width: 350px; height: auto;\" src=\"https://github.com/devxbasit/NikeStore/blob/master/ss/ProductAdd.png\" hspace=\"10\" \u003e\n  \u003cimg style=\"width: 350px; height: auto;\" src=\"https://github.com/devxbasit/NikeStore/blob/master/ss/ProductUpdate.png\" hspace=\"10\" \u003e\n\u003c/p\u003e\n\n#### Products Delete\n\n\u003cp style=\"text-align: center;\"\u003e\n  \u003cimg style=\"width: 350px; height: auto;\" src=\"https://github.com/devxbasit/NikeStore/blob/master/ss/CouponDeleteConfirmation.png\" hspace=\"10\" \u003e\n  \u003cimg style=\"width: 350px; height: auto;\" src=\"https://github.com/devxbasit/NikeStore/blob/master/ss/CouponDeleteSucces.png\" hspace=\"10\" \u003e\n\u003c/p\u003e\n\n#### Coupons Grid\n\n![nike-store Coupons Grid](https://github.com/devxbasit/NikeStore/blob/master/ss/CouponGrid.png)\n\n#### Database Coupons in Sync with StripeAPI\n\n![nike-store Stripe Coupons](https://github.com/devxbasit/NikeStore/blob/master/ss/StripeCouponsGrid.png)\n\n#### Coupons Add, Update\n\n\u003cp\u003e\n  \u003cimg style=\"width: 350px; height: auto;\" src=\"https://github.com/devxbasit/NikeStore/blob/master/ss/CouponAdd.png\" hspace=\"10\" \u003e\n  \u003cimg style=\"width: 350px; height: auto;\" src=\"https://github.com/devxbasit/NikeStore/blob/master/ss/CouponUpdate.png\" hspace=\"10\" \u003e\n\u003c/p\u003e\n\n#### Coupons Delete\n\n\u003cp\u003e\n  \u003cimg style=\"width: 350px; height: auto;\" src=\"https://github.com/devxbasit/NikeStore/blob/master/ss/CouponDeleteConfirmation.png\" hspace=\"10\" \u003e\n  \u003cimg style=\"width: 350px; height: auto;\" src=\"https://github.com/devxbasit/NikeStore/blob/master/ss/CouponDeleteSucces.png\" hspace=\"10\" \u003e\n\u003c/p\u003e\n\n#### Hangfire Dashboard\n\n![nike-store microservice app flow](https://github.com/devxbasit/NikeStore/blob/master/ss/hangfire-dashboard.png)\n\n#### Hangfire Succeeded Jobs\n\n![nike-store microservice app flow](https://github.com/devxbasit/NikeStore/blob/master/ss/hangfire-succeeded-jobs.png)\n\n#### Hangfire Servers\n\n![nike-store microservice app flow](https://github.com/devxbasit/NikeStore/blob/master/ss/hangfire-servers.png)\n\n#### RabbitMQ Queues\n\n![nike-store microservice app flow](https://github.com/devxbasit/NikeStore/blob/master/ss/rabbit-mq-queues.png)\n\n#### Customer Registration Mail\n\n![nike-store microservice app flow](https://github.com/devxbasit/NikeStore/blob/master/ss/registration-mail.png)\n\n#### Order Confirmation Mail\n\n![nike-store microservice app flow](https://github.com/devxbasit/NikeStore/blob/master/ss/order-confirmation-mail.png)\n\n#### Email Cart Mail\n\n![nike-store microservice app flow](https://github.com/devxbasit/NikeStore/blob/master/ss/email-cart-mail.png)\n\n#### Microservices Architecture Screenshot - 1\n\n\u003cp\u003e\n  \u003cimg style=\"width: 350px; height: auto;\" src=\"https://github.com/devxbasit/NikeStore/blob/master/ss/rider-rabbit-mq.png\" hspace=\"10\" \u003e\n  \u003cimg style=\"width: 350px; height: auto;\" src=\"https://github.com/devxbasit/NikeStore/blob/master/ss/rider-frontend.png\" hspace=\"10\" \u003e\n\u003c/p\u003e\n\n\u003cp\u003e\n  \u003cimg style=\"width: 350px; height: auto;\"  src=\"https://github.com/devxbasit/NikeStore/blob/master/ss/sql.png\" hspace=\"10\" \u003e\n  \u003cimg style=\"width: 350px; height: auto;\"  src=\"https://github.com/devxbasit/NikeStore/blob/master/ss/rider-overview.png\" hspace=\"10\" \u003e\n\u003c/p\u003e\n\n#### Commands\n\nRun in AuthAPI\n```\ndotnet user-secrets init\ndotnet user-secrets set \"ConnectionStrings:AuthApiDbConnectionString\" \"stripe secret key here\"\ndotnet user-secrets set \"ApiSettings:JwtOptions:Secret\" \"FinTransact secret key here\"\ndotnet user-secrets set \"RabbitMQSettings:RabbitMQConnectionOptions:UserName\" \"username here\"\ndotnet user-secrets set \"RabbitMQSettings:RabbitMQConnectionOptions:Password\" \"password here\"\n\n```\n\n#### Other Stuff\n\n```\nAppFlowDiagram Here(sign in using mailtobasit74@gmail.com) - https://lucid.app/lucidchart/aa986b8f-13f0-48dd-8023-72f977b2872e/edit?beaconFlowId=79A866E7CA46BB7F\u0026invitationId=inv_0de6832b-7c0e-40e9-8dda-1e23f83e53a3\u0026page=0_0#\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevxbasit%2Ffintransact","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevxbasit%2Ffintransact","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevxbasit%2Ffintransact/lists"}