Skip to content
This repository has been archived by the owner on Oct 26, 2021. It is now read-only.

AJax2012/Recipes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Recipes

NOTE as of 10/14/2021 this project is no longer being maintained.

Recipes app using Dotnet Core (core functionality), NestJS (identity), and Vue with Typescript (client). Authentication will eventually be handled with Magic Link. The full project will be deployed as a private service (invitation only). Please contact me if interested in joining. Hosting this app in the cloud isn't free. I will eventually also attempt to host this as a demo project somehow. If you attempt to run this locally, please make sure to handle the dependencies and fill out the .env files listed below as well as the appsettings.json file in the server/Core/Api project.

Magic link allows this app to be run completely passwordless. In order to run this, sign up for Magic link to create an app. Copy the public key to the client .env file and the private key to the identity .env file.

Dependencies

Environment

Vue .env Sample

VUE_APP_WEB_API_URL="https://localhost:****/api/"
VUE_APP_IDENTITY_URL="https://localhost:****/api/"
VUE_APP_MAGIC_KEY=pk_*****

Identity .env Sample

MAGIC_KEY=sk_****
JWT_SECRET=****
JWT_ISSUER=****
JWT_AUDIENCE=****
DATABASE_CONNECTION_STRING=****
THROTTLE_TTL=15
THROTTLE_LIMIT=4
REDIS=localhost:6379

Appsettings.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "RavenSettings": {
    "Urls": [ "http://localhost:****" ],
    "DatabaseName": "Recipes"
  },
  "Auth": {
    "JwtBearerSettings": {
      "SecretKey": "****",
      "Issuer": "****",
      "Audience": "****",
      "ExpiryTimeInSeconds": 60
    }
  },
  "Google": {
    "BucketName": "****",
    "CredentialsFilePath":  "****"
  },
  "ConnectionStrings": {
    "Redis": "localhost:6379"
  },
  "IpRateLimiting": {
    "EnableEndpointRateLimiting": true,
    "StackBlockedRequests": false,
    "RealIpHeader": "X-Real-IP",
    "ClientIdHeader": "X-ClientId",
    "HttpStatusCode": 429,
    "GeneralRules": [
      {
        "Endpoint": "get:/api/recipes*",
        "Period": "30s",
        "Limit": 15
      },
      {
        "Endpoint": "post:*",
        "Period": "15s",
        "Limit": 4
      },
      {
        "Endpoint": "put:*",
        "Period": "15s",
        "Limit": 4
      },
      {
        "Endpoint": "delete:*",
        "Period": "15s",
        "Limit": 4
      }
    ]
  }
}

ToDo

  • Create CI/CD files
  • write unit tests for Vue and Core API!!!
  • create mobile app (get list of recipes and view details only)
  • possibly rewrite recipes API to use mongo?

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published