Skip to content

Latest commit

 

History

History
158 lines (133 loc) · 4.31 KB

README.md

File metadata and controls

158 lines (133 loc) · 4.31 KB

Halcyon API

A .NET Core REST API project template 👷 Built with a sense of peace and tranquillity 🙏

Features

Related Projects

Getting Started

Prerequisites

Install dependencies

Restore NuGet packages:

dotnet restore "halcyon-api.sln"

Update local configuration (optional)

In the src/Halcyon.Api directory of the project, create a new appsettings.Development.json file. This file will override settings in appsettings.json during local development. This file is ignored by Git, so the secrets will not be committed to the repository.

{
  "ConnectionStrings": {
    "Database": "Host=localhost;Port=5432;Database=halcyon;Username=postgres;Password=password",
    "RabbitMq": "amqp://guest:guest@localhost:5672",
    "Redis": "localhost"
  },
  "RateLimiter": {
    "ReplenishmentPeriod": 1,
    "QueueLimit": 2,
    "TokenLimit": 8,
    "TokenLimit2": 12,
    "TokensPerPeriod": 4,
    "AutoReplenishment": true
  },
  "CorsPolicy": {
    "AllowedOrigins": [ "http://localhost:3000" ],
    "AllowedMethods": [ "GET", "POST", "PUT", "DELETE", "OPTIONS" ],
    "AllowedHeaders": [ "Content-Type", "Authorization", "Access-Control-Allow-Credentials", "X-Requested-With", "x-signalr-user-agent" ]
  },
  "Email": {
    "SmtpServer": "localhost",
    "SmtpPort": 1025,
    "SmtpUserName": null,
    "SmtpPassword": null,
    "NoReplyAddress": "noreply@example.com"
  },
 "Jwt": {
    "SecurityKey": "super_secret_key_that_should_be_changed",
    "Issuer": "HalcyonApi",
    "Audience": "HalcyonClient",
    "ExpiresIn": 3600
  },
  "Seed": {
    "Users": [
      {
        "EmailAddress": "system.administrator@example.com",
        "Password": "super_secret_password_that_should_be_changed",
        "FirstName": "System",
        "LastName": "Administrator",
        "DateOfBirth": "1970-01-01",
        "Roles": [ "SYSTEM_ADMINISTRATOR" ]
      }
    ]
  },
  "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft.AspNetCore": "Warning",
        "Microsoft.Hosting.Lifetime": "Information"
      }
    },
    "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
    "Properties": {
      "ApplicationName": "Halcyon.Api"
    },
    "WriteTo": {
      "Console": {
        "Name": "Console",
        "Args": {
          "outputTemplate": "{Timestamp:HH:mm:ss} [{Level:u3}] [{SourceContext}] {Message:lj}{NewLine}{Exception}"
        }
      },
      "Seq": {
        "Name": "Seq",
        "Args": { "serverUrl": "http://localhost:5341" }
      }
    }
  },
  "AllowedHosts": "*"
}

Run the application

dotnet run --project "src/Halcyon.Api/Halcyon.Api.csproj"

Access the API

Once running, you can explore the API using Swagger UI at http://localhost:5257

Testing

This project includes unit tests. To run tests:

dotnet test "halcyon-api.sln"

Contributing

Feel free to submit issues or pull requests to improve the template. Ensure that you follow the coding standards and test your changes before submission.

License

This project is licensed under the MIT License. See the LICENSE file for details.