@@ -15,45 +15,48 @@ Production is live on Azure (Israel Central):
1515## Project structure
1616
1717```
18- 01-Database/ GroundShareDB.sql — complete schema + stored procedures (single source of truth)
18+ .github/ CI/CD workflows
19+ docs/ Setup, deploy, security, and AI context docs (this file)
20+ src/
21+ 01-database/ GroundShareDB.sql — complete schema + stored procedures (single source of truth)
1922 ResetData.sql — wipes user data while keeping schema + lookups
20- 02-Server/ C# ASP.NET Core 8 Web API
21- Controllers/ 18 controllers (Auth, Users, Events, Geo, Locations, Favorites,
23+ 02-server/ C# ASP.NET Core 8 Web API
24+ Controllers/ 18 controllers (Auth, Users, Events, Geo, Locations, Favorites,
2225 Ai, Comments, Comparisons, Files, Health, Notifications, etc.)
23- DAL/ Data access — pure ADO.NET, NO Entity Framework. All DB calls use
26+ DAL/ Data access — pure ADO.NET, NO Entity Framework. All DB calls use
2427 SqlConnection + SqlCommand, mostly via stored procedures (sp_*)
25- BL/ Request/response DTOs (LoginRequest, CreateEventRequest, User, etc.)
26- Services/ Business logic (auth, storage, AI, rate limiting)
27- Middleware/ Exception handling, security headers, request logging
28- Validators/ FluentValidation rules for request DTOs
29- 03-Client/ React 18 + TypeScript + Vite
30- src/app/
31- components/ Screen components (MainScreen, CreateEventScreen, etc.)
32- shared/ Reusable UI (BottomNavBar, TopSearchBar, MapLayout, DrawerMenu, etc.)
33- address-search/ AddressInfoPanel, EventCard, ReviewSection, icons, types
34- context/ AuthContext (JWT + user state), MapContext (map config + overlays)
35- hooks/ useGeolocation, useGoogleMapsKey, useSwipeBack
36- services/ api.ts (all backend calls), addressAutocomplete.ts (data.gov.il)
37- routes.ts React Router 7 — route definitions with ProtectedRoute/GuestRoute guards
38- src/styles/ tailwind.css, theme.css (CSS variables), fonts.css (Heebo, Poppins)
39- src/assets/ Logo and map mockup images
40- src/imports/ SVG icon path exports
41- reference / Design specs: screen mockups (screens.pdf), workflow diagram, Hebrew spec doc
28+ BL/ Request/response DTOs (LoginRequest, CreateEventRequest, User, etc.)
29+ Services/ Business logic (auth, storage, AI, rate limiting)
30+ Middleware/ Exception handling, security headers, request logging
31+ Validators/ FluentValidation rules for request DTOs
32+ 03-client/ React 18 + TypeScript + Vite
33+ src/app/
34+ components/ Screen components (MainScreen, CreateEventScreen, etc.)
35+ shared/ Reusable UI (BottomNavBar, TopSearchBar, MapLayout, DrawerMenu, etc.)
36+ address-search/ AddressInfoPanel, EventCard, ReviewSection, icons, types
37+ context/ AuthContext (JWT + user state), MapContext (map config + overlays)
38+ hooks/ useGeolocation, useGoogleMapsKey, useSwipeBack
39+ services/ api.ts (all backend calls), addressAutocomplete.ts (data.gov.il)
40+ routes.ts React Router 7 — route definitions with ProtectedRoute/GuestRoute guards
41+ src/styles/ tailwind.css, theme.css (CSS variables), fonts.css (Heebo, Poppins)
42+ src/assets/ Logo and map mockup images
43+ src/imports/ SVG icon path exports
44+ tools / Pre-commit hook for gitleaks
4245```
4346
4447## Running locally
4548
4649``` bash
47- # Database: Run 01-Database /GroundShareDB.sql in SSMS against local SQL Express.
50+ # Database: Run src/ 01-database /GroundShareDB.sql in SSMS against local SQL Express.
4851# DB starts empty — register your first user through the app's Register screen.
49- # To reset between tests: run 01-Database /ResetData.sql
52+ # To reset between tests: run src/ 01-database /ResetData.sql
5053
5154# Backend (port 5227)
52- cd 02-Server
55+ cd src/ 02-server
5356dotnet run
5457
5558# Frontend (port 5173)
56- cd 03-Client
59+ cd src/ 03-client
5760npm install
5861npm run dev
5962```
@@ -167,7 +170,7 @@ POST /api/comparisons Save comparison
167170
168171## Database rules (MANDATORY)
169172
170- ` 01-Database /GroundShareDB.sql ` is the ** single source of truth** for the entire schema.
173+ ` src/ 01-database /GroundShareDB.sql` is the ** single source of truth** for the entire schema.
171174
172175- ** Never create migration files.** All schema changes (new tables, new SPs, modified SPs, new indexes) go directly into ` GroundShareDB.sql ` .
173176- Every table uses ` IF OBJECT_ID(...) IS NULL CREATE TABLE ... ` so the file is safe to re-run on existing databases.
@@ -180,7 +183,7 @@ POST /api/comparisons Save comparison
180183
181184## Adding a full-stack feature (checklist)
182185
183- 1 . ** Database** : Add table/SP directly in ` 01-Database /GroundShareDB.sql ` , run in SSMS
186+ 1 . ** Database** : Add table/SP directly in ` src/ 01-database /GroundShareDB.sql` , run in SSMS
1841872 . ** DAL** : Create ` XxxDAL.cs ` inheriting ` DBServices ` , call SP with ` CreateSP() `
1851883 . ** DTO** : Add request/response models in ` BL/ `
1861894 . ** Controller** : Create ` XxxController.cs ` with ` [Route("api/xxx")] ` , inject DAL
0 commit comments