PicAFlick is a full-stack movie and TV watchlist application built to explore real-world software architecture using modern .NET technologies.
Experience PicAFlick in action — from natural language chat to AI-driven recommendations powered by Semantic Kernel and TMDb.
Watch the demo
It serves as both a personal tool for managing what to watch next and a hands-on implementation of clean architecture principles, API design, and client-server interaction.
- Search and add movies and TV shows via the TMDb API
- Manage a personalized watchlist
- Mark items as watched and track viewing status
- Store and retrieve data using SQL Server
- Console-based AI assistant (CapstoneChatbot) that interacts with the API
The system is structured with clear separation of concerns:
- ASP.NET Core Web API → Handles business logic and data access
- Angular SPA → Frontend client for user interaction
- SQL Server → Persistent data storage
- CapstoneChatbot (Console App) → AI-driven interface using Semantic Kernel
Data flow:
Client (Angular / Console)
↓ HTTP
Web API
↓
Domain Services
↓
Database
- C# / .NET 8
- ASP.NET Core Web API
- Angular
- Entity Framework Core
- SQL Server
- TMDb API
- Semantic Kernel (AI integration)
PicAFlick consists of an Angular frontend, an ASP.NET Core Web API, a SQL Server database, and an optional AI console application built with Semantic Kernel.
The following steps configure the services and credentials required to run the application locally.
Unless otherwise noted, all paths and cd commands below are relative to the PicAFlick repository root.
PicAFlick uses The Movie Database (TMDb) for movie and TV data.
- Create a TMDb account at https://www.themoviedb.org/signup
- Go to https://www.themoviedb.org/settings/api
- Copy your API Read Access Token (v4 auth) and API Key.
These credentials will be added to .NET User Secrets in the steps below.
The AI functionality uses Semantic Kernel with GitHub Models.
- Go to https://github.com/marketplace/models
- Sign in to your GitHub account.
- Create a GitHub Models API token with access to the OpenAI models, specifically
openai/gpt-4o. - Copy and store the token securely. It will be added to .NET User Secrets below.
Note: The AI application is currently configured to use
openai/gpt-4o. If the model is changed in code, the GitHub Models token must have access to the selected model.
The Web API uses .NET User Secrets to keep the TMDb API token out of source control.
Navigate to the Web API project:
cd PicAFlick.WebApiInitialize User Secrets:
dotnet user-secrets initAdd your TMDb API Read Access Token:
dotnet user-secrets set "Tmdb:ApiToken" "your_api_read_access_token_here"Verify the configuration:
dotnet user-secrets listYou should see:
Tmdb:ApiToken = ...
The Web API uses SQL Server for local data storage.
Configure the Default connection string in:
PicAFlick.WebApi/appsettings.Development.json
Example using Windows authentication:
{
"ConnectionStrings": {
"Default": "Server=localhost;Database=PicAFlick;Trusted_Connection=True;TrustServerCertificate=True"
}
}Update the server and database values as needed for your local SQL Server configuration.
The AI console application is a separate .NET project and has its own User Secrets configuration.
Navigate to:
cd CapstoneChatbot/CapstoneChatbot.AppInitialize User Secrets:
dotnet user-secrets initAdd the required credentials:
dotnet user-secrets set "Tmdb:ApiToken" "your_api_read_access_token_here"
dotnet user-secrets set "Tmdb:ApiKey" "your_tmdb_api_key_here"
dotnet user-secrets set "GithubModels:ApiKey" "your_github_models_api_key_here"Verify the configuration:
dotnet user-secrets listYou should see:
Tmdb:ApiToken = ...
Tmdb:ApiKey = ...
GithubModels:ApiKey = ...
Never commit API tokens, API keys, or other secrets to source control.
A complete local development session uses Visual Studio and two terminals.
Open PicAFlick.sln in Visual Studio.
Set PicAFlick.WebApi as the startup project and click the green Run/Play button.
The API will start using the development settings in launchSettings.json, and Swagger should open in your browser.
Keep Visual Studio running while using PicAFlick. Running the API through Visual Studio enables debugging and breakpoints.
Open a terminal at the PicAFlick repository root and navigate to:
cd PicAFlick.SPAStart the Angular development server:
npm startThe application should be available at:
https://localhost:4200
Keep this terminal running while using PicAFlick.
With the PicAFlick Web API already running, open another terminal and navigate to:
cd CapstoneChatbot/CapstoneChatbot.AppStart the AI console application:
dotnet runThe AI assistant uses Semantic Kernel and GitHub Models to interpret natural-language requests and communicates with the PicAFlick Web API.
When running the complete application locally, you will typically have:
- Visual Studio:
PicAFlick.WebApirunning with the debugger - Terminal 1:
PicAFlick.SPArunning withnpm start - Terminal 2:
CapstoneChatbot.Apprunning withdotnet run - Browser:
https://localhost:4200
This product uses the TMDb API but is not endorsed or certified by TMDb. All movie and TV data is provided by The Movie Database (TMDb).