# MVC-Starter - Architecture

**Date:** 2026-03-11T11:59:39Z
**Project Type:** web
**Architecture:** Server-rendered MVC monolith

## Executive Summary

MVC-Starter is a Classic ASP starter application built around a single IIS-hosted deployable unit. Requests enter through `public/Default.asp`, flow through a shared runtime in `core/`, and resolve into application-specific controllers and views under `app/`.

## Technology Stack

- Classic ASP / VBScript
- Windows IIS with URL Rewrite
- RouteKit-style router and MVC dispatcher
- Microsoft Access via ACE OLE DB
- Bootstrap 5.3.3 and Bootstrap Icons 1.11.3 from CDN
- VBScript tooling for scaffolding and migrations

## Architecture Pattern

Starter/framework hybrid MVC monolith:

- `public/` handles web entry and IIS-facing config
- `core/` handles routing, dispatch, validation, helpers, and DAL concerns
- `app/` contains project-specific behavior and server-rendered views
- `db/` and `scripts/` support data and operational workflows

## Request Flow

1. IIS receives the request.
2. `public/web.config` rewrites non-static requests to `public/Default.asp`.
3. `Default.asp` registers routes and calls `MVC.DispatchRequest`.
4. `core/mvc.asp` validates controller/action names, checks whitelist registration, resolves the current controller dynamically, and executes the target action.
5. Shared layout files wrap the response if `useLayout` is enabled.

## Data Architecture

- Database configuration is read from `public/web.config`.
- `db/webdata.accdb` is the included Access database.
- DAL and migration helpers live in `core/`.
- Repositories and POBOs are expected to be generated via `scripts/GenerateRepo.vbs`.

## Component Overview

- Controllers: `app/controllers/`
- Views: `app/views/`
- Shared layout: `app/views/shared/`
- Runtime/framework: `core/`
- Scaffolding/tooling: `scripts/`

## Source Tree

See [source-tree-analysis.md](./source-tree-analysis.md) for the annotated directory breakdown.

## Development Workflow

- Generate migration
- Generate POBO/repository
- Generate controller
- Register controller include, whitelist, and routes
- Add views and validate via IIS-hosted execution

## Deployment Architecture

- Single IIS site
- `public/` as web root
- XML config in `public/web.config`
- No separate service/process topology detected

## Testing Strategy

- No automated test framework detected
- Manual request-flow verification is required
- Script tooling can be validated via `cscript`

## Architectural Constraints

- Dynamic dispatch means naming and registration consistency are part of runtime correctness.
- `core/`, `public/Default.asp`, and `public/web.config` are high-impact files.
- The architecture assumes Windows/IIS hosting rather than cross-platform portability.
