This is Part 1 of a series on Designing, Building & Packaging A Scalable, Testable .NET Open Source Component.

I am working on a pet project that requires the uploading and storage of files before processing them. As I was doing so I realized that this is a problem I keep having, and chances are somebody else is too.

This is an excellent opportunity to consolidate many of the topics we have discussed over the last six months.

We will therefore walk through the following:

  • Articulating our requirements
  • Preparing a design
  • Building the component
  • Testing the component
  • Packaging the component
  • Deploying the component
  • Iterration
  • Documentation

I will build this in public, with the source code available to anyone interested in GitHub. I will do my best to document everything for clarity, as this is an opportunity to not only teach but also learn myself.

Topics I expect to cover in the course of this series are:

  • Testing
    • Unit testing
    • Mocking
    • Integration testing
  • Classes & Types
    • Interfaces
    • Records & classes
    • Enums
  • I/O
    • File Streams
    • Memory Streams
    • Bytes & byte arrays
    • Compression
  • Dependency injection
  • Database access & storage
    • SQL Server
    • PostgreSQL
  • File system access & storage
  • Cloud (Blob) storage and access
    • Azure
    • Amazon
  • Documentation
    • OpenAI
    • MarkDown
    • XML Documentation
  • Continuous Integration
  • Logging

As usual, I will assume no prior knowledge (besides basic programming experience - how to write a class and compile your code).

This should be fun!

TLDR

I am going to publicly build a very simple open-source component to manage uploaded files.

Happy hacking!