Skip to content

Directory Structure

After creating a new Saturn project, Let's take a deeper look into what files are created.

├── .fake
├── .paket
├── .vs
├── .packages
├── paket-files
├── src
|   ├── Migrations
|   └── SaturnSample
├── .gitignore
├── build.cmd
├── build.fsx
├── build.sh
├── global.json
├── paket.dependencies
├── paket.lock
└── SaturnSample.sln

At this level most of it is basic configuration files to help with running Saturn. From looking at the .paket, paket-files, paket.dependencies, paket.lock folders and files, you can see that by default Saturn uses paket to handle package management. You won't be working with these files directly but rather through the command line tools instead.

Saturn also use FAKE to build the project. You can see how it is set up by looking at the .fake folder and the build.cmd, build.fsx, build.sh files.

Saturn also provide a .gitignore file that prevent some folders from being tracked by git when they don't need to.

Lastly, there is the SaturnSample.sln solution file so you can open the project in an ide like Visual Sudio and a global.json file to configure the solution file.

Most of the work you will do in this project however, will be in src/SaturnSample which looks like the following when expanded.

├── bin
├── Books
|   ├── BooksController.fs
|   ├── BooksModel.fs
|   ├── BooksRepository.fs
|   └── BooksView.fs
├── obj
├── static
|   ├── app.css
|   └── app.js
├── Templates
|   ├── App.fs
|   ├── Index.fs
|   ├── InternalError.fs
|   └── NotFound.fs
├── Config.fs
├── Database.fs
├── database.sqlite
├── paket.references
├── Program.fs
├── Router.fs
└── SaturnSample.fsproj

bin and obj folders stored the compiled version of the program after you build the project.

The convention for Saturn is that the model and everything associated with it are inside one folder. Everything is also named with the plural form of the model so "Books" instead of "Book".

Your static files like css, js, and images should be inside the static folder.

Config.fs contains a Config record that can stores settings that you can use inside your application. By default, the record only contains the connectionString field.

Database.fs contains functions to execute sql queries within the program through Dapper.

If you did not run dotnet saturn migration as in the how to start guide, you might not see database.sqlite but that is the database file that your Saturn project is using to store data.

paket.references shows the packages that your project is using.

Program.fs handles intializing the program and load up various settings.

Router.fs is where you will set the route of the site and what page to loads.

Lastly, SaturnSample.fsproj is the project file itself.