This project is a full cryptocurrency investment manager and analytics suite that I’ve been sculpting over the last two years. It brings together real-time price tracking, detailed transaction logging, and rich statistical insight to help you keep a steady hand in the stormy seas of digital assets.
You can run the project either directly on your machine or inside Docker.
- .NET 8
- Node.js v18+
- Angular v18
- SQL Server
- Azure Functions Core Tools
- EF Core tools
- Azurite (for local Azure Blob + Queue storage emulation) Azurite can be installed as a VS Code extension or via npm.
- Docker Desktop
Before running the API you need to configure the settings file:
dg-invest/api/api/appsettings.json
{
"AzureStorageSettings": {
"ConnectionString": "YourConnectionStringHere",
"ContainerName": "YourContainerNameHere",
"WelcomeEmailQueue": "welcomeemail"
},
"CoinMarketCapSettings": {
"ApiKey": "YourCoinMarketCapApiKeyHere",
"BaseUrl": "https://pro-api.coinmarketcap.com",
"Header": "X-CMC_PRO_API_KEY"
},
"JWTSettings": {
"ExpiryMinutes": 120,
"Issuer": "http://my-local-host.com",
"Secret": "YourJwtSecretHere"
},
"RateLimiterSettings": {
"RequestsPermitLimit": 320,
"WindowLimitInMinutes": 10
},
"RunMigrations": false,
"Serilog": {
"Enrich": [
"FromLogContext",
"WithMachineName",
"WithThreadId"
],
"MinimumLevel": {
"Default": "Error",
"Override": {
"Microsoft": "Error",
"System": "Error"
}
},
"Using": [
"Serilog.Sinks.AzureBlobStorage"
],
"WriteTo": [
{
"Name": "AzureBlobStorage",
"Args": {
"connectionString": "YourSerilogConnectionStringHere",
"restrictedToMinimumLevel": "Information",
"storageContainerName": "logs",
"storageFileName": "log-{yyyy}-{MM}-{dd}.json"
}
}
]
},
"ConnectionStrings": {
"DefaultConnection": "YourSqlAzureConnectionStringHere"
}
}- Clone the repository
git clone https://github.com/douglassantanna/dg-invest.git
cd dg-invest- Run the application
docker compose upDocker will launch:
- SQL Server
- API Service
- Angular frontend
Once everything settles, open: https://localhost:4200
Use these credentials:
- email: admin@admin.com
- password: admin123
Install SQL Server Express, Azure Functions Core Tools, Azurite (VS Code extension or npm), .NET 8, EF Core tools, Node.js V18+, NPM and Angular CLI V18
- Create a database named
dg-investin SQL Server - Copy its connection string into
appsettings.jsonunderConnectionString:Default
cd dg-invest/api/api
dotnet ef database update- In VS Code, open the command palette and type
Azurite: Start - Azurite will print its local connections string in the output panel. Copy that string. For reference, check Documentation
- Add the Azurite connection string into the
appsettings.jsonunderAzureStorageSettings:ConnectionString
cd dg-invest/api/api
dotnet runcd dg-invest/api/functions
func startcd dg-invest/web-app
ng s -oThe frontend launches automatically. Access the application using the credentials
- email: admin@admin.com
- password: admin123
dg-invest/
│
├── .github/
│ └── workflows/ # CI/CD pipelines
│
├── api/
│ ├── api/ # .NET 8 Web API
│ ├── functions/ # Azure Functions (background workers)
│ ├── unit-tests/ # Automated tests
│ ├── dg-invest.api.sln # Solution file
│ └── Dockerfile # API + Functions Docker image
│
├── web-app/
│ ├── cypress/ # E2E tests
│ ├── src/ # Angular 18 application
│ ├── Dockerfile # Frontend Docker image
│ └── package.json
│
├── docker-compose.yml # Full stack environment
└── README.md