<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Full-Stack | Scott Miner</title><link>https://scottminer.rbind.io/tags/full-stack/</link><atom:link href="https://scottminer.rbind.io/tags/full-stack/index.xml" rel="self" type="application/rss+xml"/><description>Full-Stack</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Fri, 23 May 2025 00:00:00 +0000</lastBuildDate><image><url>https://scottminer.rbind.io/media/sharing.png</url><title>Full-Stack</title><link>https://scottminer.rbind.io/tags/full-stack/</link></image><item><title>Job Grove</title><link>https://scottminer.rbind.io/projects/job-grove/</link><pubDate>Tue, 11 Mar 2025 00:00:00 +0000</pubDate><guid>https://scottminer.rbind.io/projects/job-grove/</guid><description>&lt;p&gt;Job Grove is a job board and aggregator that pulls job postings into a single, searchable feed. The front end is built with Vue.js and deployed on Netlify.&lt;/p&gt;
&lt;h2 id="features"&gt;Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Real-time job posts&lt;/strong&gt;: new listings appear in the feed as they are published.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aggregation&lt;/strong&gt;: postings from multiple sources are normalized into one consistent card layout.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accounts&lt;/strong&gt;: visitors can sign up to save their place and personalize the experience.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Responsive UI&lt;/strong&gt;: the layout adapts from phone to desktop.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-it-demonstrates"&gt;What it demonstrates&lt;/h2&gt;
&lt;p&gt;Building a responsive single-page application in Vue.js, consuming external APIs, managing client-side state, and shipping a static front end to a CDN.&lt;/p&gt;
&lt;p&gt;
to try it out.&lt;/p&gt;</description></item><item><title>Jackets Store</title><link>https://scottminer.rbind.io/projects/jackets-store/</link><pubDate>Tue, 11 Mar 2025 00:00:00 +0000</pubDate><guid>https://scottminer.rbind.io/projects/jackets-store/</guid><description>&lt;p&gt;Jackets Store is a full-stack e-commerce proof of concept. A Vue.js storefront talks to a Django REST API that handles products, carts, orders, and user accounts.&lt;/p&gt;
&lt;h2 id="features"&gt;Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Product catalog&lt;/strong&gt; with product detail pages.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shopping cart and checkout&lt;/strong&gt; flow from browsing to order confirmation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;User accounts&lt;/strong&gt; for sign-up, login, and order history.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Payments as donations&lt;/strong&gt;: the checkout processes a payment flow for demonstration purposes only. No physical items are shipped.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-it-demonstrates"&gt;What it demonstrates&lt;/h2&gt;
&lt;p&gt;Designing a REST API with Django REST Framework, authenticating users between a decoupled front end and back end, and modeling the core entities of an online store.&lt;/p&gt;
&lt;p&gt;
to walk through the store.&lt;/p&gt;</description></item><item><title>Dev Blog (ASP.NET MVC)</title><link>https://scottminer.rbind.io/projects/dev-blog/</link><pubDate>Tue, 11 Mar 2025 00:00:00 +0000</pubDate><guid>https://scottminer.rbind.io/projects/dev-blog/</guid><description>&lt;p&gt;A developer blog I built from scratch on ASP.NET MVC. A RESTful C# backend manages posts and image uploads, and the application is deployed to Azure App Service.&lt;/p&gt;
&lt;h2 id="features"&gt;Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Post management&lt;/strong&gt;: create, edit, and publish articles with a clean URL handle per post.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Image uploads&lt;/strong&gt; handled server-side through a REST endpoint.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Server-rendered views&lt;/strong&gt; with ASP.NET MVC for fast, indexable pages.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloud hosting&lt;/strong&gt; on Azure App Service.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-it-demonstrates"&gt;What it demonstrates&lt;/h2&gt;
&lt;p&gt;Server-side .NET skills: MVC architecture, REST API design in C#, file handling, and deploying a .NET web app to Azure. The blog is also where I write about ASP.NET Core topics such as setting up a development environment.&lt;/p&gt;
&lt;p&gt;
to read the latest posts.&lt;/p&gt;</description></item><item><title>eCommerce Microservices</title><link>https://scottminer.rbind.io/projects/ecommerce-microservices/</link><pubDate>Fri, 23 May 2025 00:00:00 +0000</pubDate><guid>https://scottminer.rbind.io/projects/ecommerce-microservices/</guid><description>&lt;p&gt;An e-commerce platform decomposed into independently deployable microservices. Each service lives in its own repository (wired in as Git submodules), owns its data store, and communicates through an API gateway and a message broker.&lt;/p&gt;
&lt;h2 id="architecture"&gt;Architecture&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Service&lt;/th&gt;
&lt;th&gt;Responsibility&lt;/th&gt;
&lt;th&gt;Storage &amp;amp; messaging&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Products&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;CRUD API for the catalog with business-logic and data-access layers (EF Core) and xUnit tests&lt;/td&gt;
&lt;td&gt;MySQL, publishes events to RabbitMQ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Orders&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Order creation and querying, RabbitMQ consumers, Ocelot API gateway for cross-service calls&lt;/td&gt;
&lt;td&gt;MongoDB, Redis cache&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Users&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Authentication and user retrieval with a Dapper data layer&lt;/td&gt;
&lt;td&gt;PostgreSQL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Frontend&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Angular 17 single-page app that talks to the services through the gateway&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="deployment"&gt;Deployment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docker compose -f docker-compose-build.yaml up --build&lt;/code&gt; builds and starts the whole stack with seeded databases for local development.&lt;/li&gt;
&lt;li&gt;Kubernetes manifests under &lt;code&gt;aks/&lt;/code&gt; run every service in Azure Kubernetes Service or any other cluster.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-it-demonstrates"&gt;What it demonstrates&lt;/h2&gt;
&lt;p&gt;Service boundaries and polyglot persistence, asynchronous communication with RabbitMQ, API gateway patterns with Ocelot, containerization, and orchestrating a multi-service system with Docker Compose and Kubernetes.&lt;/p&gt;</description></item></channel></rss>