Skip to content

Joshua-Goad/portfolio-api

Repository files navigation

📘 Portfolio API

A lightweight, modular REST API powering my personal website (joshuagoad.com).Built with ASP.NET Core (.NET 8), this API serves project data, portfolio information, and backend logic for future expansions.Designed with clean architecture principles, environment‑based configuration, and forward‑compatible routing.

🚀 Features

RESTful JSON endpoints

Modular controller-based architecture

Environment-based configuration (appsettings.json)

Strongly-typed configuration + dependency injection

Scalable folder layout for future services

Ready for CI/CD integration (Jenkins, GitHub Actions, Azure DevOps)

Designed for forward-compatible expansion

🛠 Tech Stack

.NET 8 Web API

C#

ASP.NET Core

JSON Serialization

Dependency Injection

Environment Configuration

Azure/AWS Hosting (planned)

📡 API Endpoints

Endpoint

Method

Description

/projects

GET

Returns list of portfolio projects

/status

GET

Health check endpoint

/about

GET

Returns profile information

🧱 Project Structure

/Controllers ProjectsController.cs WeatherForecastController.cs /Properties appsettings.json appsettings.Development.json Program.cs Portfolio.Api.csproj Portfolio.Api.http

💡 Tech Highlights

Modern .NET 8 Web API

Clean, modular controller structure

JSON-based responses for all endpoints

Environment-based configuration for dev/prod

Dependency injection for scalable architecture

Ready for CI/CD pipeline integration

Forward-compatible design for additional services and endpoints

📦 Installation

git clone https://github.com/Joshua-Goad/portfolio-api cd portfolio-api dotnet restore

▶ Running the API

dotnet run

The API will start on the port defined in your .env or appsettings.json.

🔐 Environment Variables

Create a .env file (if using environment overrides):

PORT=5000 ASPNETCORE_ENVIRONMENT=Development

Or configure directly in appsettings.json.

🧪 Testing the API

You can test endpoints using:

Portfolio.Api.http (built-in HTTP file)

Postman

curl

Example:

curl https://localhost:5000/projects

📈 Future Enhancements

Add authentication (JWT or OAuth)

Add database integration (PostgreSQL or MongoDB)

Add logging and monitoring (Serilog, Seq, CloudWatch)

Add automated tests (xUnit, NUnit)

Add Jenkins CI/CD pipeline

Add caching layer for performance

📜 License

MIT License

About

Backend API for my personal portfolio website. Provides project data, supports future expansions, and is built with ASP.NET Core.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages