Skip to content

Commit 1ee993c

Browse files
jeff-nassericlaude
andcommitted
refactor: repo hygiene + reorganize src into server/ and client/
- Remove the screenshots/ folder from git (now gitignored) and drop the dangling image refs in docs/usage.md. - Add CI + website status badges under the README banner. - Add a CodeQL workflow (C# + JavaScript) for vulnerability scanning. - Drop the slow acceptance E2E job from the Frontend Tests pipeline; the project still builds in CI and runs locally. - Move the four Server.* projects under src/server/ and the four Client.* projects under src/client/; update the solution, Dockerfiles and test project references. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent c86d514 commit 1ee993c

206 files changed

Lines changed: 94 additions & 182 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/codeql.yml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: CodeQL
2+
3+
on:
4+
push:
5+
branches: [master, main]
6+
pull_request:
7+
branches: [master, main]
8+
schedule:
9+
- cron: '0 6 * * 1'
10+
11+
jobs:
12+
analyze:
13+
name: Analyze (${{ matrix.language }})
14+
runs-on: ubuntu-latest
15+
permissions:
16+
actions: read
17+
contents: read
18+
security-events: write
19+
strategy:
20+
fail-fast: false
21+
matrix:
22+
language: [csharp, javascript-typescript]
23+
steps:
24+
- uses: actions/checkout@v4
25+
26+
- name: Setup .NET 10
27+
if: matrix.language == 'csharp'
28+
uses: actions/setup-dotnet@v4
29+
with:
30+
dotnet-version: '10.0.x'
31+
32+
- name: Initialize CodeQL
33+
uses: github/codeql-action/init@v3
34+
with:
35+
languages: ${{ matrix.language }}
36+
37+
- name: Build solution (C#)
38+
if: matrix.language == 'csharp'
39+
run: dotnet build Capitrack.sln -c Release
40+
41+
- name: Autobuild
42+
if: matrix.language != 'csharp'
43+
uses: github/codeql-action/autobuild@v3
44+
45+
- name: Perform CodeQL Analysis
46+
uses: github/codeql-action/analyze@v3
47+
with:
48+
category: "/language:${{ matrix.language }}"

.github/workflows/frontend-tests.yml

Lines changed: 4 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -21,35 +21,7 @@ jobs:
2121
- name: Run bUnit component tests
2222
run: dotnet test tests/Client.Tests/Client.Tests.csproj -c Release --logger "console;verbosity=normal"
2323

24-
acceptance-tests:
25-
name: AcceptanceTests (Reqnroll + Testcontainers + Playwright)
26-
runs-on: ubuntu-latest
27-
steps:
28-
- uses: actions/checkout@v4
29-
30-
- name: Setup .NET 10
31-
uses: actions/setup-dotnet@v4
32-
with:
33-
dotnet-version: '10.0.x'
34-
35-
- name: Build acceptance tests
36-
run: dotnet build tests/AcceptanceTests/AcceptanceTests.csproj -c Release
37-
38-
- name: Install Playwright browsers
39-
run: pwsh tests/AcceptanceTests/bin/Release/net10.0/playwright.ps1 install --with-deps chromium
40-
41-
# Build the app images once, with BuildKit, in a dedicated step. The classic
42-
# builder Testcontainers uses is far slower/heavier for the Blazor WASM image
43-
# and starves the runner when run alongside the test host.
44-
- name: Build app images for E2E
45-
env:
46-
DOCKER_BUILDKIT: '1'
47-
run: |
48-
docker build -f docker/api.Dockerfile -t capitrack-acc-api:latest .
49-
docker build -f docker/web.Dockerfile -t capitrack-acc-web:latest .
50-
51-
- name: Run acceptance tests (BDD E2E)
52-
env:
53-
CAPITRACK_API_IMAGE: capitrack-acc-api:latest
54-
CAPITRACK_WEB_IMAGE: capitrack-acc-web:latest
55-
run: dotnet test tests/AcceptanceTests/AcceptanceTests.csproj -c Release --no-build --logger "console;verbosity=normal"
24+
# The AcceptanceTests project (Reqnroll + Testcontainers + Playwright) is built by
25+
# the Build pipeline and is intended to be run locally (it spins up the full stack
26+
# in Docker and drives a browser, which is too slow/heavy for every CI push):
27+
# dotnet test tests/AcceptanceTests/AcceptanceTests.csproj

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,6 @@ temp/
5050

5151
# Design source files (mockups & exports — not part of the application)
5252
Design Files/
53+
54+
# Generated screenshots (not tracked)
55+
/screenshots/

Capitrack.sln

Lines changed: 8 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,24 @@
1-
21
Microsoft Visual Studio Solution File, Format Version 12.00
32
# Visual Studio Version 17
43
VisualStudioVersion = 17.0.31903.59
54
MinimumVisualStudioVersion = 10.0.40219.1
6-
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}"
5+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server.Domain", "src\server\Server.Domain\Server.Domain.csproj", "{0359F104-5020-4D39-9697-7EC365DB4FEF}"
76
EndProject
8-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server.Domain", "src\Server.Domain\Server.Domain.csproj", "{0359F104-5020-4D39-9697-7EC365DB4FEF}"
7+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server.Application", "src\server\Server.Application\Server.Application.csproj", "{D9C54A7E-5614-44ED-9DD2-836FEB466AAD}"
98
EndProject
10-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server.Application", "src\Server.Application\Server.Application.csproj", "{D9C54A7E-5614-44ED-9DD2-836FEB466AAD}"
9+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server.Infrastructure", "src\server\Server.Infrastructure\Server.Infrastructure.csproj", "{1E82AF19-8B80-421F-8A25-0E83819D3658}"
1110
EndProject
12-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server.Infrastructure", "src\Server.Infrastructure\Server.Infrastructure.csproj", "{1E82AF19-8B80-421F-8A25-0E83819D3658}"
13-
EndProject
14-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server.Api", "src\Server.Api\Server.Api.csproj", "{15B5C649-0007-4AE3-8B5D-7F00103917E9}"
15-
EndProject
16-
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{0AB3BF05-4346-4AA6-1389-037BE0695223}"
11+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server.Api", "src\server\Server.Api\Server.Api.csproj", "{15B5C649-0007-4AE3-8B5D-7F00103917E9}"
1712
EndProject
1813
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server.Tests", "tests\Server.Tests\Server.Tests.csproj", "{8921DBB2-12B1-4963-A744-28BF6ED29915}"
1914
EndProject
20-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client.Domain", "src\Client.Domain\Client.Domain.csproj", "{9E0B597C-4E66-4621-B230-7036DA70DC6C}"
15+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client.Domain", "src\client\Client.Domain\Client.Domain.csproj", "{9E0B597C-4E66-4621-B230-7036DA70DC6C}"
2116
EndProject
22-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client.Application", "src\Client.Application\Client.Application.csproj", "{0BC925DF-D8D6-4003-8048-7C58C145BB15}"
17+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client.Application", "src\client\Client.Application\Client.Application.csproj", "{0BC925DF-D8D6-4003-8048-7C58C145BB15}"
2318
EndProject
24-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client.Infrastructure", "src\Client.Infrastructure\Client.Infrastructure.csproj", "{03B77C9A-4805-4491-813D-9931323914A6}"
19+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client.Infrastructure", "src\client\Client.Infrastructure\Client.Infrastructure.csproj", "{03B77C9A-4805-4491-813D-9931323914A6}"
2520
EndProject
26-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client.Presentation", "src\Client.Presentation\Client.Presentation.csproj", "{E9F89FBC-055F-4212-A50A-39089D9BFD78}"
21+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client.Presentation", "src\client\Client.Presentation\Client.Presentation.csproj", "{E9F89FBC-055F-4212-A50A-39089D9BFD78}"
2722
EndProject
2823
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client.Tests", "tests\Client.Tests\Client.Tests.csproj", "{6A14F7F9-CDDD-45AE-8A2B-8821B8BBD4A2}"
2924
EndProject
@@ -32,160 +27,55 @@ EndProject
3227
Global
3328
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3429
Debug|Any CPU = Debug|Any CPU
35-
Debug|x64 = Debug|x64
36-
Debug|x86 = Debug|x86
3730
Release|Any CPU = Release|Any CPU
38-
Release|x64 = Release|x64
39-
Release|x86 = Release|x86
4031
EndGlobalSection
4132
GlobalSection(ProjectConfigurationPlatforms) = postSolution
4233
{0359F104-5020-4D39-9697-7EC365DB4FEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
4334
{0359F104-5020-4D39-9697-7EC365DB4FEF}.Debug|Any CPU.Build.0 = Debug|Any CPU
44-
{0359F104-5020-4D39-9697-7EC365DB4FEF}.Debug|x64.ActiveCfg = Debug|Any CPU
45-
{0359F104-5020-4D39-9697-7EC365DB4FEF}.Debug|x64.Build.0 = Debug|Any CPU
46-
{0359F104-5020-4D39-9697-7EC365DB4FEF}.Debug|x86.ActiveCfg = Debug|Any CPU
47-
{0359F104-5020-4D39-9697-7EC365DB4FEF}.Debug|x86.Build.0 = Debug|Any CPU
4835
{0359F104-5020-4D39-9697-7EC365DB4FEF}.Release|Any CPU.ActiveCfg = Release|Any CPU
4936
{0359F104-5020-4D39-9697-7EC365DB4FEF}.Release|Any CPU.Build.0 = Release|Any CPU
50-
{0359F104-5020-4D39-9697-7EC365DB4FEF}.Release|x64.ActiveCfg = Release|Any CPU
51-
{0359F104-5020-4D39-9697-7EC365DB4FEF}.Release|x64.Build.0 = Release|Any CPU
52-
{0359F104-5020-4D39-9697-7EC365DB4FEF}.Release|x86.ActiveCfg = Release|Any CPU
53-
{0359F104-5020-4D39-9697-7EC365DB4FEF}.Release|x86.Build.0 = Release|Any CPU
5437
{D9C54A7E-5614-44ED-9DD2-836FEB466AAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
5538
{D9C54A7E-5614-44ED-9DD2-836FEB466AAD}.Debug|Any CPU.Build.0 = Debug|Any CPU
56-
{D9C54A7E-5614-44ED-9DD2-836FEB466AAD}.Debug|x64.ActiveCfg = Debug|Any CPU
57-
{D9C54A7E-5614-44ED-9DD2-836FEB466AAD}.Debug|x64.Build.0 = Debug|Any CPU
58-
{D9C54A7E-5614-44ED-9DD2-836FEB466AAD}.Debug|x86.ActiveCfg = Debug|Any CPU
59-
{D9C54A7E-5614-44ED-9DD2-836FEB466AAD}.Debug|x86.Build.0 = Debug|Any CPU
6039
{D9C54A7E-5614-44ED-9DD2-836FEB466AAD}.Release|Any CPU.ActiveCfg = Release|Any CPU
6140
{D9C54A7E-5614-44ED-9DD2-836FEB466AAD}.Release|Any CPU.Build.0 = Release|Any CPU
62-
{D9C54A7E-5614-44ED-9DD2-836FEB466AAD}.Release|x64.ActiveCfg = Release|Any CPU
63-
{D9C54A7E-5614-44ED-9DD2-836FEB466AAD}.Release|x64.Build.0 = Release|Any CPU
64-
{D9C54A7E-5614-44ED-9DD2-836FEB466AAD}.Release|x86.ActiveCfg = Release|Any CPU
65-
{D9C54A7E-5614-44ED-9DD2-836FEB466AAD}.Release|x86.Build.0 = Release|Any CPU
6641
{1E82AF19-8B80-421F-8A25-0E83819D3658}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
6742
{1E82AF19-8B80-421F-8A25-0E83819D3658}.Debug|Any CPU.Build.0 = Debug|Any CPU
68-
{1E82AF19-8B80-421F-8A25-0E83819D3658}.Debug|x64.ActiveCfg = Debug|Any CPU
69-
{1E82AF19-8B80-421F-8A25-0E83819D3658}.Debug|x64.Build.0 = Debug|Any CPU
70-
{1E82AF19-8B80-421F-8A25-0E83819D3658}.Debug|x86.ActiveCfg = Debug|Any CPU
71-
{1E82AF19-8B80-421F-8A25-0E83819D3658}.Debug|x86.Build.0 = Debug|Any CPU
7243
{1E82AF19-8B80-421F-8A25-0E83819D3658}.Release|Any CPU.ActiveCfg = Release|Any CPU
7344
{1E82AF19-8B80-421F-8A25-0E83819D3658}.Release|Any CPU.Build.0 = Release|Any CPU
74-
{1E82AF19-8B80-421F-8A25-0E83819D3658}.Release|x64.ActiveCfg = Release|Any CPU
75-
{1E82AF19-8B80-421F-8A25-0E83819D3658}.Release|x64.Build.0 = Release|Any CPU
76-
{1E82AF19-8B80-421F-8A25-0E83819D3658}.Release|x86.ActiveCfg = Release|Any CPU
77-
{1E82AF19-8B80-421F-8A25-0E83819D3658}.Release|x86.Build.0 = Release|Any CPU
7845
{15B5C649-0007-4AE3-8B5D-7F00103917E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
7946
{15B5C649-0007-4AE3-8B5D-7F00103917E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
80-
{15B5C649-0007-4AE3-8B5D-7F00103917E9}.Debug|x64.ActiveCfg = Debug|Any CPU
81-
{15B5C649-0007-4AE3-8B5D-7F00103917E9}.Debug|x64.Build.0 = Debug|Any CPU
82-
{15B5C649-0007-4AE3-8B5D-7F00103917E9}.Debug|x86.ActiveCfg = Debug|Any CPU
83-
{15B5C649-0007-4AE3-8B5D-7F00103917E9}.Debug|x86.Build.0 = Debug|Any CPU
8447
{15B5C649-0007-4AE3-8B5D-7F00103917E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
8548
{15B5C649-0007-4AE3-8B5D-7F00103917E9}.Release|Any CPU.Build.0 = Release|Any CPU
86-
{15B5C649-0007-4AE3-8B5D-7F00103917E9}.Release|x64.ActiveCfg = Release|Any CPU
87-
{15B5C649-0007-4AE3-8B5D-7F00103917E9}.Release|x64.Build.0 = Release|Any CPU
88-
{15B5C649-0007-4AE3-8B5D-7F00103917E9}.Release|x86.ActiveCfg = Release|Any CPU
89-
{15B5C649-0007-4AE3-8B5D-7F00103917E9}.Release|x86.Build.0 = Release|Any CPU
9049
{8921DBB2-12B1-4963-A744-28BF6ED29915}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
9150
{8921DBB2-12B1-4963-A744-28BF6ED29915}.Debug|Any CPU.Build.0 = Debug|Any CPU
92-
{8921DBB2-12B1-4963-A744-28BF6ED29915}.Debug|x64.ActiveCfg = Debug|Any CPU
93-
{8921DBB2-12B1-4963-A744-28BF6ED29915}.Debug|x64.Build.0 = Debug|Any CPU
94-
{8921DBB2-12B1-4963-A744-28BF6ED29915}.Debug|x86.ActiveCfg = Debug|Any CPU
95-
{8921DBB2-12B1-4963-A744-28BF6ED29915}.Debug|x86.Build.0 = Debug|Any CPU
9651
{8921DBB2-12B1-4963-A744-28BF6ED29915}.Release|Any CPU.ActiveCfg = Release|Any CPU
9752
{8921DBB2-12B1-4963-A744-28BF6ED29915}.Release|Any CPU.Build.0 = Release|Any CPU
98-
{8921DBB2-12B1-4963-A744-28BF6ED29915}.Release|x64.ActiveCfg = Release|Any CPU
99-
{8921DBB2-12B1-4963-A744-28BF6ED29915}.Release|x64.Build.0 = Release|Any CPU
100-
{8921DBB2-12B1-4963-A744-28BF6ED29915}.Release|x86.ActiveCfg = Release|Any CPU
101-
{8921DBB2-12B1-4963-A744-28BF6ED29915}.Release|x86.Build.0 = Release|Any CPU
10253
{9E0B597C-4E66-4621-B230-7036DA70DC6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
10354
{9E0B597C-4E66-4621-B230-7036DA70DC6C}.Debug|Any CPU.Build.0 = Debug|Any CPU
104-
{9E0B597C-4E66-4621-B230-7036DA70DC6C}.Debug|x64.ActiveCfg = Debug|Any CPU
105-
{9E0B597C-4E66-4621-B230-7036DA70DC6C}.Debug|x64.Build.0 = Debug|Any CPU
106-
{9E0B597C-4E66-4621-B230-7036DA70DC6C}.Debug|x86.ActiveCfg = Debug|Any CPU
107-
{9E0B597C-4E66-4621-B230-7036DA70DC6C}.Debug|x86.Build.0 = Debug|Any CPU
10855
{9E0B597C-4E66-4621-B230-7036DA70DC6C}.Release|Any CPU.ActiveCfg = Release|Any CPU
10956
{9E0B597C-4E66-4621-B230-7036DA70DC6C}.Release|Any CPU.Build.0 = Release|Any CPU
110-
{9E0B597C-4E66-4621-B230-7036DA70DC6C}.Release|x64.ActiveCfg = Release|Any CPU
111-
{9E0B597C-4E66-4621-B230-7036DA70DC6C}.Release|x64.Build.0 = Release|Any CPU
112-
{9E0B597C-4E66-4621-B230-7036DA70DC6C}.Release|x86.ActiveCfg = Release|Any CPU
113-
{9E0B597C-4E66-4621-B230-7036DA70DC6C}.Release|x86.Build.0 = Release|Any CPU
11457
{0BC925DF-D8D6-4003-8048-7C58C145BB15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
11558
{0BC925DF-D8D6-4003-8048-7C58C145BB15}.Debug|Any CPU.Build.0 = Debug|Any CPU
116-
{0BC925DF-D8D6-4003-8048-7C58C145BB15}.Debug|x64.ActiveCfg = Debug|Any CPU
117-
{0BC925DF-D8D6-4003-8048-7C58C145BB15}.Debug|x64.Build.0 = Debug|Any CPU
118-
{0BC925DF-D8D6-4003-8048-7C58C145BB15}.Debug|x86.ActiveCfg = Debug|Any CPU
119-
{0BC925DF-D8D6-4003-8048-7C58C145BB15}.Debug|x86.Build.0 = Debug|Any CPU
12059
{0BC925DF-D8D6-4003-8048-7C58C145BB15}.Release|Any CPU.ActiveCfg = Release|Any CPU
12160
{0BC925DF-D8D6-4003-8048-7C58C145BB15}.Release|Any CPU.Build.0 = Release|Any CPU
122-
{0BC925DF-D8D6-4003-8048-7C58C145BB15}.Release|x64.ActiveCfg = Release|Any CPU
123-
{0BC925DF-D8D6-4003-8048-7C58C145BB15}.Release|x64.Build.0 = Release|Any CPU
124-
{0BC925DF-D8D6-4003-8048-7C58C145BB15}.Release|x86.ActiveCfg = Release|Any CPU
125-
{0BC925DF-D8D6-4003-8048-7C58C145BB15}.Release|x86.Build.0 = Release|Any CPU
12661
{03B77C9A-4805-4491-813D-9931323914A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
12762
{03B77C9A-4805-4491-813D-9931323914A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
128-
{03B77C9A-4805-4491-813D-9931323914A6}.Debug|x64.ActiveCfg = Debug|Any CPU
129-
{03B77C9A-4805-4491-813D-9931323914A6}.Debug|x64.Build.0 = Debug|Any CPU
130-
{03B77C9A-4805-4491-813D-9931323914A6}.Debug|x86.ActiveCfg = Debug|Any CPU
131-
{03B77C9A-4805-4491-813D-9931323914A6}.Debug|x86.Build.0 = Debug|Any CPU
13263
{03B77C9A-4805-4491-813D-9931323914A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
13364
{03B77C9A-4805-4491-813D-9931323914A6}.Release|Any CPU.Build.0 = Release|Any CPU
134-
{03B77C9A-4805-4491-813D-9931323914A6}.Release|x64.ActiveCfg = Release|Any CPU
135-
{03B77C9A-4805-4491-813D-9931323914A6}.Release|x64.Build.0 = Release|Any CPU
136-
{03B77C9A-4805-4491-813D-9931323914A6}.Release|x86.ActiveCfg = Release|Any CPU
137-
{03B77C9A-4805-4491-813D-9931323914A6}.Release|x86.Build.0 = Release|Any CPU
13865
{E9F89FBC-055F-4212-A50A-39089D9BFD78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
13966
{E9F89FBC-055F-4212-A50A-39089D9BFD78}.Debug|Any CPU.Build.0 = Debug|Any CPU
140-
{E9F89FBC-055F-4212-A50A-39089D9BFD78}.Debug|x64.ActiveCfg = Debug|Any CPU
141-
{E9F89FBC-055F-4212-A50A-39089D9BFD78}.Debug|x64.Build.0 = Debug|Any CPU
142-
{E9F89FBC-055F-4212-A50A-39089D9BFD78}.Debug|x86.ActiveCfg = Debug|Any CPU
143-
{E9F89FBC-055F-4212-A50A-39089D9BFD78}.Debug|x86.Build.0 = Debug|Any CPU
14467
{E9F89FBC-055F-4212-A50A-39089D9BFD78}.Release|Any CPU.ActiveCfg = Release|Any CPU
14568
{E9F89FBC-055F-4212-A50A-39089D9BFD78}.Release|Any CPU.Build.0 = Release|Any CPU
146-
{E9F89FBC-055F-4212-A50A-39089D9BFD78}.Release|x64.ActiveCfg = Release|Any CPU
147-
{E9F89FBC-055F-4212-A50A-39089D9BFD78}.Release|x64.Build.0 = Release|Any CPU
148-
{E9F89FBC-055F-4212-A50A-39089D9BFD78}.Release|x86.ActiveCfg = Release|Any CPU
149-
{E9F89FBC-055F-4212-A50A-39089D9BFD78}.Release|x86.Build.0 = Release|Any CPU
15069
{6A14F7F9-CDDD-45AE-8A2B-8821B8BBD4A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15170
{6A14F7F9-CDDD-45AE-8A2B-8821B8BBD4A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
152-
{6A14F7F9-CDDD-45AE-8A2B-8821B8BBD4A2}.Debug|x64.ActiveCfg = Debug|Any CPU
153-
{6A14F7F9-CDDD-45AE-8A2B-8821B8BBD4A2}.Debug|x64.Build.0 = Debug|Any CPU
154-
{6A14F7F9-CDDD-45AE-8A2B-8821B8BBD4A2}.Debug|x86.ActiveCfg = Debug|Any CPU
155-
{6A14F7F9-CDDD-45AE-8A2B-8821B8BBD4A2}.Debug|x86.Build.0 = Debug|Any CPU
15671
{6A14F7F9-CDDD-45AE-8A2B-8821B8BBD4A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
15772
{6A14F7F9-CDDD-45AE-8A2B-8821B8BBD4A2}.Release|Any CPU.Build.0 = Release|Any CPU
158-
{6A14F7F9-CDDD-45AE-8A2B-8821B8BBD4A2}.Release|x64.ActiveCfg = Release|Any CPU
159-
{6A14F7F9-CDDD-45AE-8A2B-8821B8BBD4A2}.Release|x64.Build.0 = Release|Any CPU
160-
{6A14F7F9-CDDD-45AE-8A2B-8821B8BBD4A2}.Release|x86.ActiveCfg = Release|Any CPU
161-
{6A14F7F9-CDDD-45AE-8A2B-8821B8BBD4A2}.Release|x86.Build.0 = Release|Any CPU
16273
{BEDD4EE4-97E0-4C6C-B1F5-B0B150EE13DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
16374
{BEDD4EE4-97E0-4C6C-B1F5-B0B150EE13DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
164-
{BEDD4EE4-97E0-4C6C-B1F5-B0B150EE13DE}.Debug|x64.ActiveCfg = Debug|Any CPU
165-
{BEDD4EE4-97E0-4C6C-B1F5-B0B150EE13DE}.Debug|x64.Build.0 = Debug|Any CPU
166-
{BEDD4EE4-97E0-4C6C-B1F5-B0B150EE13DE}.Debug|x86.ActiveCfg = Debug|Any CPU
167-
{BEDD4EE4-97E0-4C6C-B1F5-B0B150EE13DE}.Debug|x86.Build.0 = Debug|Any CPU
16875
{BEDD4EE4-97E0-4C6C-B1F5-B0B150EE13DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
16976
{BEDD4EE4-97E0-4C6C-B1F5-B0B150EE13DE}.Release|Any CPU.Build.0 = Release|Any CPU
170-
{BEDD4EE4-97E0-4C6C-B1F5-B0B150EE13DE}.Release|x64.ActiveCfg = Release|Any CPU
171-
{BEDD4EE4-97E0-4C6C-B1F5-B0B150EE13DE}.Release|x64.Build.0 = Release|Any CPU
172-
{BEDD4EE4-97E0-4C6C-B1F5-B0B150EE13DE}.Release|x86.ActiveCfg = Release|Any CPU
173-
{BEDD4EE4-97E0-4C6C-B1F5-B0B150EE13DE}.Release|x86.Build.0 = Release|Any CPU
17477
EndGlobalSection
17578
GlobalSection(SolutionProperties) = preSolution
17679
HideSolutionNode = FALSE
17780
EndGlobalSection
178-
GlobalSection(NestedProjects) = preSolution
179-
{0359F104-5020-4D39-9697-7EC365DB4FEF} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
180-
{D9C54A7E-5614-44ED-9DD2-836FEB466AAD} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
181-
{1E82AF19-8B80-421F-8A25-0E83819D3658} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
182-
{15B5C649-0007-4AE3-8B5D-7F00103917E9} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
183-
{8921DBB2-12B1-4963-A744-28BF6ED29915} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
184-
{9E0B597C-4E66-4621-B230-7036DA70DC6C} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
185-
{0BC925DF-D8D6-4003-8048-7C58C145BB15} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
186-
{03B77C9A-4805-4491-813D-9931323914A6} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
187-
{E9F89FBC-055F-4212-A50A-39089D9BFD78} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
188-
{6A14F7F9-CDDD-45AE-8A2B-8821B8BBD4A2} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
189-
{BEDD4EE4-97E0-4C6C-B1F5-B0B150EE13DE} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
190-
EndGlobalSection
19181
EndGlobal

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@
22
<img src="assets/banner.svg" alt="Capitrack — self-hosted wealth tracking for stocks, crypto and commodities" width="880">
33
</p>
44

5+
<p align="center">
6+
<a href="https://github.com/jeff-nasseri/Capitrack/actions/workflows/build.yml"><img src="https://github.com/jeff-nasseri/Capitrack/actions/workflows/build.yml/badge.svg" alt="Build"></a>
7+
<a href="https://github.com/jeff-nasseri/Capitrack/actions/workflows/backend-tests.yml"><img src="https://github.com/jeff-nasseri/Capitrack/actions/workflows/backend-tests.yml/badge.svg" alt="Backend Tests"></a>
8+
<a href="https://github.com/jeff-nasseri/Capitrack/actions/workflows/frontend-tests.yml"><img src="https://github.com/jeff-nasseri/Capitrack/actions/workflows/frontend-tests.yml/badge.svg" alt="Frontend Tests"></a>
9+
<a href="https://github.com/jeff-nasseri/Capitrack/actions/workflows/codeql.yml"><img src="https://github.com/jeff-nasseri/Capitrack/actions/workflows/codeql.yml/badge.svg" alt="CodeQL"></a>
10+
<a href="https://capitrack.dev"><img src="https://img.shields.io/badge/website-capitrack.dev-6366f1?logo=googlechrome&logoColor=white" alt="Website"></a>
11+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT License"></a>
12+
</p>
13+
514
# Capitrack
615

716
**Personal wealth tracking and investment portfolio management platform.**

0 commit comments

Comments
 (0)