11# Sparkly Server
22
3- Backend API for ** Sparkly** , a build‑in‑public social platform . This repository contains the C# / .NET backend that powers authentication, user accounts, project management and the core application features used by the Sparkly web client.
3+ Backend API for ** Sparkly** , a platform for documenting progress, building projects consistently and creating a dynamic portfolio . This repository contains the C# / .NET backend that powers authentication, user accounts, project timelines and the core application logic used by the Sparkly web client.
44
5- > Status: early development – API surface, architecture and testing pipeline are actively evolving .
5+ > Status: early development – the API, domain model and testing setup continue to evolve .
66
77---
88
99## Tech stack
1010
11- * ** .NET** : .NET 9 (ASP.NET Core Web API)
12- * ** Data access ** : Entity Framework Core (code‑ first migrations)
13- * ** Database ** : PostgreSQL (local or via Docker)
14- * ** Containerization ** : Docker + Docker Compose
15- * ** Tests ** : xUnit integration tests using TestServer
16- * ** CI/CD ** : GitHub Actions (build + tests + optional Docker build)
17- * ** Tooling ** : ` dotnet ` CLI, EF Core CLI
11+ * ** .NET 9 ** (ASP.NET Core Web API)
12+ * ** Entity Framework Core** (code- first migrations)
13+ * ** PostgreSQL ** (local or Docker)
14+ * ** Docker + Docker Compose** for containerization
15+ * ** xUnit ** integration tests with TestServer
16+ * ** GitHub Actions** (build, tests, optional Docker build)
17+ * ` dotnet ` CLI and EF Core CLI
1818
1919---
2020
2121## Project structure
2222
2323``` text
2424sparkly-server/
25- ├─ src/ # API, domain, infrastructure
25+ ├─ src/ # API, domain and infrastructure
2626├─ Migrations/ # EF Core migrations
2727├─ sparkly-server.test/ # Integration tests
28- ├─ Program.cs # Entrypoint
29- ├─ compose.yaml # Docker Compose stack (API + DB)
28+ ├─ Program.cs # Application entrypoint
29+ ├─ compose.yaml # Docker Compose stack
3030├─ Dockerfile # API image
31- ├─ .github/workflows/ # GitHub Actions CI
32- ├─ appsettings.json # Base config (non-secret)
31+ ├─ .github/workflows/ # CI pipelines
32+ ├─ appsettings.json # Base config
3333└─ appsettings.Development.json # Local overrides
3434```
3535
36- The ` src ` directory contains controllers, domain models, services, repositories and configuration . Tests live in a separate project with isolated database state.
36+ ` src ` contains controllers, services, domain entities, validators and repository logic . Tests run in isolation with a clean database state.
3737
3838---
3939
4040## Getting started
4141
42- ### Prerequisites
42+ ### Requirements
4343
4444* .NET 9 SDK
4545* Docker + Docker Compose
4646* Git
4747
48- ### Clone
48+ ### Clone the repo
4949
5050``` bash
5151git clone https://github.com/SculptTechProject/sparkly-server.git
5252cd sparkly-server
5353```
5454
55- ### Environment configuration
55+ ### Environment variables
5656
57- The backend reads configuration from ` appsettings.json ` and environment variables. Do not commit secrets .
57+ Configuration comes from ` appsettings.json ` and environment variables. Secrets should never be committed .
5858
59- Example variables :
59+ Example setup :
6060
6161``` bash
6262export ASPNETCORE_ENVIRONMENT=Development
6363export ConnectionStrings__DefaultConnection=" Host=localhost;Port=5432;Database=sparkly;Username=sparkly;Password=changeme"
6464export Jwt__Issuer=" https://sparkly.local"
6565export Jwt__Audience=" sparkly-app"
66- export Jwt__Secret=" super-long-random- secret-key-change-me"
66+ export Jwt__Secret=" super-long-secret-key-change-me"
6767```
6868
69- A ` .env.example ` or ` appsettings.Development.example.json ` is recommended to document required keys .
69+ Providing an example config file ( ` .env.example ` or ` appsettings.Development.example.json ` ) is recommended.
7070
71- ### Database migrations
71+ ### Apply migrations
7272
7373``` bash
7474dotnet restore
7575dotnet ef database update
7676```
7777
78- Or let Docker apply migrations at startup, depending on configuration .
78+ Docker can also run migrations automatically depending on the setup .
7979
8080### Run locally
8181
82- ** Dotnet CLI :**
82+ ** Using dotnet :**
8383
8484``` bash
8585dotnet restore
8686dotnet run
8787```
8888
89- ** Docker Compose:**
89+ ** Using Docker Compose:**
9090
9191``` bash
9292docker compose up --build
9393```
9494
95- This builds the API image and launches both the API and PostgreSQL.
95+ This launches the API and PostgreSQL.
9696
9797---
9898
9999## Tests
100100
101- The project includes integration tests that run the API using an in-memory test server. Tests reset database state for every run .
101+ Integration tests run the API with an isolated in-memory server. Each test resets database state.
102102
103- Run tests locally:
103+ Run locally:
104104
105105``` bash
106106dotnet test
107107```
108108
109- Run tests using Docker Compose:
109+ Run through Docker Compose:
110110
111111``` bash
112112docker compose run --rm api dotnet test
113113```
114114
115115---
116116
117- ## GitHub Actions (CI)
117+ ## GitHub Actions CI
118118
119- This repository contains a CI pipeline that runs on every push and pull request :
119+ The repository includes a pipeline triggered on push and pull requests. It performs :
120120
121121* restore and build
122- * run tests
123- * optionally build Docker image
122+ * test execution
123+ * optional Docker image build
124124
125- This ensures that the API and tests stay green across contributions .
125+ This ensures the API stays stable across changes .
126126
127127---
128128
129129## API overview
130130
131- The backend currently covers :
131+ Current features :
132132
133- * user registration and login
134- * user profile and authentication
133+ * user authentication and login
134+ * user profiles
135135* project creation and management
136136
137- Planned additions :
137+ Planned development :
138138
139- * feed system for build-in-public updates
140- * real‑time notifications
141- * billing and subscription logic
142- * moderation and admin endpoints
139+ * project timelines and weekly logs
140+ * build-in-public feed
141+ * notifications
142+ * subscriptions and billing
143+ * admin and moderation tools
143144
144- Documentation will be available through OpenAPI/Swagger .
145+ OpenAPI / Swagger documentation will be added .
145146
146147---
147148
148- ## Docker commands
149+ ## Docker usage
149150
150- Build image manually:
151+ Build the image manually:
151152
152153``` bash
153154docker build -t sparkly-server .
154155```
155156
156- Run image manually :
157+ Run the container :
157158
158159``` bash
159160docker run \
@@ -167,47 +168,47 @@ docker run \
167168
168169## Secrets
169170
170- Secrets must always be supplied using environment variables or secret management tools. Never commit real credentials .
171+ Secrets must be provided via environment variables or a secret manager .
171172
172- Likely future keys:
173+ Future keys may include :
173174
174- * Stripe secrets
175- * JWT settings
175+ * Stripe
176+ * JWT
176177* OAuth providers (GitHub, Google)
177178
178179---
179180
180181## Development workflow
181182
182- 1 . Create a small issue or task.
183- 2 . Implement changes on a feature branch.
184- 3 . Add or update tests.
185- 4 . Run local build and tests.
186- 5 . Push and open a PR .
183+ 1 . Open an issue or define a small task.
184+ 2 . Implement the change in a feature branch.
185+ 3 . Update or add tests.
186+ 4 . Run the build and tests locally .
187+ 5 . Open a pull request .
187188
188- This keeps the project clean and easy to maintain .
189+ This keeps the repository clean and maintainable .
189190
190191---
191192
192- ## Roadmap (short‑ term)
193+ ## Short- term roadmap
193194
194- * Full authentication and refresh tokens
195- * Public project pages
196- * Build-in-public feed
197- * Email notifications
198- * Admin panel foundations
199- * Observability (structured logs, metrics, probes)
195+ * refresh tokens
196+ * public project pages
197+ * project feed and logs
198+ * email notifications
199+ * admin foundations
200+ * observability ( logs, metrics, probes)
200201
201202---
202203
203204## Contributing
204205
205- The project is actively developed by the SculptTech / Sparkly team. External contributions will be welcomed once core systems stabilise .
206+ The codebase is currently maintained by the SculptTech / Sparkly team. External contributions will be accepted once the core platform stabilises .
206207
207208---
208209
209210## License
210211
211212License: ** TBD**
212213
213- Until then , treat the repository as source‑ available only.
214+ Until finalised , treat the code as source- available only.
0 commit comments