Architecture - wingtek2020/WingTekNotions GitHub Wiki
๐งต WingTek Notions Architecture Summary
๐ Overview
WingTek Notions is a full-stack application designed to manage knitting inventory, patterns, and community messaging. The architecture leverages a modern front-end with Angular, a secure and scalable .NET Core API backend, and a relational SQL Server database for persistent storage.
๐งฑ Architecture Stack
๐ฅ๏ธ Frontend (Admin Portal)
- Framework: Angular 18+
- Language: TypeScript
- **Tim's Creative react templates
- Build Tool: Angular CLI / esbuild
- Authentication: JWT
- Deployment: Static site (MyWindowsHosting)
๐ Backend API
- Framework: ASP.NET Core 8 Web API
- Language: C#
- Architecture: Clean Architecture / Onion Architecture
- Authentication & Authorization: JWT Bearer Tokens, Ravelry, Google, etc..
- Dev Pattern: Repository + Service Layer + DTOs
- Documentation: Swagger / Swashbuckle
- DevOps: TBD
๐๏ธ Database
- Engine: SQL Server
- ORM: Entity Framework Core 8
- Migrations: EF Core Migrations + Optional SSDT/Schema Drift Checks
- Seeding: Dev/Test data via EF or Manual Scripts
- Schema Tracking: Snapshot folders with versioned SQL (optional)
๐ฑ Mobile App (React Native iOS)
- Framework: React Native + Expo
- Language: TypeScript
- Navigation: React Navigation
- Authentication: Token-based (stored via AsyncStorage)
- Backend Integration: API calls via .Net Core
- Features: Offline support (optional), push notifications, chat UI
๐งถ Domain Areas
| Domain | Description |
|---|---|
| Needles | Track types, sizes, and materials of knitting needles |
| Yarn Stash | Inventory of yarns, colors, weights, and quantities |
| Patterns | User-defined or imported patterns, with categories and attributes |
| Messaging | Basic chat system for community or admin messaging |
| Authentication | User login, roles (Admin/User), secure endpoints |
๐ Dev Workflow
- Git Repos: Monorepo or split repos for API, Angular, Mobile
- Branch Strategy:
main,dev,mobile,feature/* - Local Dev Setup:
- SQL Server local instance
.envor appsettings.json for environment configs- Angular:
ng serve, API:dotnet run, Mobile:expo start
- Testing:
- Angular: Jest
- API: xUnit or NUnit
- Mobile: Expo unit tests, manual device QA
๐ Security & Roles
- Authentication: custom JWT
- Roles: Admin, Regular User
- Security Considerations:
- CORS config
- HTTPS enforcement
- Secure token storage (mobile)
- Input validation and anti-forgery
๐ Deployment Plan
| Component | Environment | Target |
|---|---|---|
| Angular | Dev/Test/Prod | Azure Static Web / Vercel |
| API | Dev/Test/Prod | Azure App Service / Docker |
| Database | Local / Azure SQL | SQL Server |
| Mobile | TestFlight / Expo | iOS App Store |
๐ Scaling Considerations - TBD
- Modular API structure allows vertical domain growth
- Use EF Core split DbContexts for isolated domains (if needed)
- Use Azure Service Bus / SignalR for future real-time messaging
- Add logging/monitoring (Serilog, App Insights) for observability
๐ Summary
This architecture supports a clean, maintainable, and scalable platform for hobbyist inventory management with future room for community interaction, mobile-first usage, and third-party integrations (e.g., Ravelry API).