DEV Community

Cover image for Episode 2 - JSON API using ASP.NET Core, Docker & MongoDB: Project Structure
Gareth Bradley
Gareth Bradley

Posted on • Originally published at garfbradaz.github.io on

3 2

Episode 2 - JSON API using ASP.NET Core, Docker & MongoDB: Project Structure

Previously on Dcoding

In Episode 1 I set the scene for what this series will contain. Today’s episode is simply on setting your directory structure and creating the relevant projects.

Directory Structure

Firstly, create a directory structure for your Source (src) where our dotnet projects will be saved, tests will hold our Unit and Integration tests and lastly, docker which will hold our docker-compose.

    .
    ├── src
    ├── tests
    ├── docker

Enter fullscreen mode Exit fullscreen mode

Src

Change directory to src and we will run the following dotnet command to new up a Project. Before we move on any further and do that though, lets talk about dotnet new for people who have not used it.

This command will create a dotnet project based off a default project template. You get a bunch of defaults with the SDK (and you can create your own. Run the following:

dotnet new --help

Enter fullscreen mode Exit fullscreen mode

This will give you a list of available templates you can use:

templates

Take note of the short name as this is what we will be using next. So now we know what dotnet new does, lets create the project:

dotnet new webapi --auth Individual -o api -n BookStore.WebApi

Enter fullscreen mode Exit fullscreen mode

This will create a folder with the name api and in it will create a new webapi project using authentication (we will explore this more in a later episode). The project will be called BookStore.WebApi.

Tip: You can do a dotnet new webapi --help and see all the available switches for that short name.

Your directory structure should look like this now:

    .
    ├── src
    | ├── api
    | |
    | ├── BookStore.WebApi
    ├── tests
    ├── docker

Enter fullscreen mode Exit fullscreen mode

Tests

Change directory to the tests folder. Firstly mainly create a integration test folder. These will hold our Postman tests (again for another episode). Secondly, we need to create our Unit Test project. I will be using Xunit, but as you can see, there were a few different projects for testing when you did a dotnet new --help.

dotnet new xunit -o unit -n BookStore.Tests

Enter fullscreen mode Exit fullscreen mode

Again this will create a xunit project type within a folder called unit. The project name will be BookStore.Tests. Within the integration folder just add an empty postman.json file.

    .
    ├── src
    | ├── api
    | |
    | ├── BookStore.WebApi
    ├── tests
    | ├── integration
    | ├── unit
    | ├── BookStore.Tests
    ├── docker

Enter fullscreen mode Exit fullscreen mode

Docker

Change directory to docker folder and for now just create two empty files:

docker-compose.yml

docker-compose.dev.yml

Yes you guessed it, this files will become apparent (and fatter) in a future episode.

Next time

So now we have set up our Project directory structure, we can move on to setting up our Docker environment, using Dockerfiles and docker-compose. Join me next time.

Side note: Episode 1 can be found on my Github Repository

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay