Deploy: UI overhaul, Azure Functions backend, simplified CI/CD - #5
Conversation
…vigation - Introduce BookingContact.razor: a 3-step scheduling/contact form with calendar, time zone selection, and validation - Add BookingFormModel.cs for form data and validation - Create Contact.razor page at /contact to host the new form - Update header navigation: "Contact" now routes to /contact, and "Back to Home" button appears on all sub-pages - Refactor header state to track sub-pages for navigation logic
Introduced a greeting tooltip bubble above the chatbot FAB to welcome users and prompt engagement. The bubble displays a message, logo, and close button, and is shown only when the chatbot is closed. Includes new state logic and CSS for appearance and animation. No changes to chatbot core functionality.
- Switched header and nav from dark to light color scheme - Replaced CloudZen logo with new HeaderLogo.png (larger size) - Updated nav link/button colors for better contrast - Changed hamburger menu to gray, moved its active CSS to Header.razor.css - Added overlay behind mobile menu for click-to-close UX - Updated mobile nav to light background and matching link colors - Refactored GetNavClass/GetContactClass for new color logic - Removed loading spinner and related CSS from index.html/app.css - Added HeaderLogo.png and cloudzen-logo-2.png images
Provides future Copilot sessions with: - Build and run commands for both frontend and backend - Architecture overview (Blazor WASM + Azure Functions) - Service, component, and configuration conventions - Styling setup (Tailwind CDN, brand colors) - Naming and security patterns Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add ToolInfo model, ToolService, ToolCardItem, and ToolsOverview components - Replace ValueProposition with ToolsOverview on landing page - Simplify Hero component layout - Register ToolService in DI (Program.cs) - Add hero background image - Minor Header, MainLayout, and CSS tweaks Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Provides a reusable skill that guides Copilot through reviewing pending changes, staging files, and writing conventional commit messages with the Co-authored-by trailer. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add Conventional Commits format with type table and examples - Add subject (50 char), body (72 char wrap), and footer rules - Enforce atomic commits (one logical change per commit) - Add guidance for splitting unrelated changes - Add security rules (never commit secrets) - Add examples for simple, multi-change, and breaking change commits Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add FeatureHighlight record model with alternating layout support - Add FeatureHighlightService with feature highlight data - Add FeatureHighlightCard and FeaturesShowcase components - Register FeatureHighlightService in DI (Program.cs) - Insert FeaturesShowcase into Index page after ToolsOverview Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… section - Add StandardInfo model and MissionService for mission data - Add ServiceCard and StandardCard reusable components - Expand Mission section with standards grid and mission points - Expand Services section with enhanced card layout - Reorganize Index page section order (Hero, Tools, CaseStudies, Features, Contact) - Remove CTA and Testimonials sections from landing page - Update Header navigation and Profile components styling - Add feature showcase images - Add new CSS utilities and scroll animations in anim.js - Register MissionService in DI (Program.cs) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add HeadOutlet to App.razor for per-page meta tag support - Add PageTitle and HeadContent with meta descriptions to all routable pages (Index, Contact, WhoIAm, Mission, Services) - Add canonical URLs for all pages - Fix heading hierarchy: ensure exactly one h1 per page (ProfileHeader h2→h1, Mission h2→h1, sub-headings h3→h2) - Add JSON-LD structured data (ProfessionalService schema with founder, services, and contact point) - Add robots meta tag (index, follow) - Enable apple-touch-icon links (previously commented out) - Add preconnect hints for CDN resources - Add aria-expanded to hamburger menu button - Add role=alert to contact form error messages - Add aria-hidden to decorative icons in Mission page Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Enable PublishTrimmed and BlazorEnableCompression in csproj to reduce WASM payload size by ~40-60% - Enable InvariantGlobalization to trim ICU data - Move Google Fonts from CSS @import to HTML <link> with preconnect to unblock CSS parsing - Add preconnect hints for fonts.googleapis.com and fonts.gstatic.com - Add loading=lazy and explicit width/height to all images (avatar, hero, feature cards, logo, project participants) - Enable PWA icons in manifest.webmanifest (were commented out) - Create staticwebapp.config.json with security headers, MIME types, navigation fallback, and proper WASM/DLL content types Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
HeadOutlet is already registered as a root component in Program.cs
via builder.RootComponents.Add<HeadOutlet>("head::after"). Adding
a second instance in App.razor caused a duplicate subscriber error.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Remove Back button and isSubPage logic from Header - Rename 'Case Studies' nav link to 'Our Work' - Update case studies links to use absolute /#cases paths - Add fragment scroll support in Index.razor for cross-page nav - Add scroll-mt-24 to CaseStudies section for proper offset Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Switch booking logo to cloudzen-logo-2.png - Restyle Explore Services button with white bg and border - Link Explore Services to /services route Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move @code blocks from .razor files into separate .razor.cs partial classes for CTA, CaseStudies, ContactForm, FeaturesShowcase, Mission, Services, ToolsOverview, and WhoIAm components. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add IBookingService, ICaseStudyService, IFeatureHighlightService, IGoogleCalendarUrlService, IMissionService, IPersonalService, IProjectService, and IToolService abstractions - Implement interfaces on existing service classes - Add new BookingService and CaseStudyService - Update Program.cs to register all services via interfaces Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Split monolithic BookingContact.razor into focused child components: - BookingSidebar: meeting info and selected date display - BookingCalendar: date picker with availability logic - BookingTimeSlots: time slot selection grid - BookingTimeZonePicker: timezone selector dropdown - BookingDetailsForm: contact details form (step 2) - BookingConfirmation: confirmation view (step 3) - BookingContact.razor.cs: orchestrator code-behind Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Organize all markdown files into structured docs/ subfolders: 01-architecture, 02-deployment, 03-features, 04-security, 05-troubleshooting, 06-patterns - Consolidate architecture docs (104KB -> 24KB, ~77% reduction): merge config files into CONFIGURATION.md, trim AZURE_FUNCTIONS.md, rewrite COMPONENT_ARCHITECTURE.md for token efficiency - Add API_ENDPOINTS.md: unified reference for all 3 Azure Functions endpoints (send-email, chat, book-appointment) - Split QUICK_FIX_RESOLUTION into 10 individual issue files - Merge KNOWN_ISSUES content into troubleshooting index - Add 06-patterns/ with Azure Functions Proxy pattern and UI Color & Design System pattern docs - Document core security rule: API keys and secrets live only in the Functions backend Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add BookAppointmentFunction Azure Function (POST /api/book-appointment) - Add AppointmentService and IAppointmentService for frontend-to-API calls - Add BookingServiceOptions with IOptions<T> configuration pattern - Add BookAppointmentRequest (API) and BookingAppointmentRequest (frontend) models - Update BookingContact orchestrator with appointment submission flow - Enhance BookingDetailsForm with phone (E.164), business name fields - Add BookingConfirmation component for success state - Update BookingCalendar and BookingTimeSlots with refined parameters - Register AppointmentService and BookingServiceOptions in Program.cs - Update InputValidator with date/time format validation - Update SendEmailFunction with minor refactoring - Update ContactForm and BookingService with booking flow adjustments Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ature Move from horizontal layers (Models/, Services/, Shared/) to vertical slices where each feature owns its components, models, services, and options. WASM project — 7 feature slices + Common: - Features/Booking/ (7 components, 2 models, 6 services, 1 option) - Features/Contact/ (1 component, 4 models, 2 services, 1 option) - Features/Chat/ (1 component, 1 model, 2 services, 1 option) - Features/Landing/ (12 components, 4 models, 10 services) - Features/Profile/ (5 components, 1 model, 1 service) - Features/Projects/ (2 components, 2 models, 2 services) - Features/Tickets/ (1 component, 1 model, 2 services) - Common/ (2 shared components, 1 option) API project — 3 feature slices + Shared: - Api/Features/Booking/ (function + request model) - Api/Features/Contact/ (function + request model + settings) - Api/Features/Chat/ (function + request/response models) - Api/Shared/ (security, rate limiting, shared models) Layout/ and Pages/ remain at root (Blazor convention). All namespaces updated to match new paths. _Imports.razor includes all feature namespaces globally. Build verified: 0 errors. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Update COMPONENT_ARCHITECTURE.md directory structure to reflect vertical slices - Update CONFIGURATION.md options inventory with new file locations - Add Related Docs cross-reference section to all 5 architecture docs - Link to patterns docs (proxy pattern, UI design system) where relevant Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…lication - Create CANCEL_RESCHEDULE_PLAN.md in docs/03-features with full implementation plan - Add Cross-Project Model Duplication section to VERTICAL_SLICE_ARCHITECTURE.md - Add Model Ownership & Transformation section to 01_azure_functions_proxy_api.md - Both docs cross-reference each other for the structural vs behavioral explanation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…eschedule Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add ProjectCategory enum (SideProject, CustomerWork, AiAutomation) - Add AiAutomationDetails record (TargetAudience, ProblemSolved, CustomerBenefits) composed into ProjectInfo - Add GetProjectsByCategory() to IProjectService and ProjectService - Create three AI Automation projects: AI Chatbot Assistance, Booking Appointments, Custom Customer-Facing Web Application - Assign Category to all existing projects for type-safe filtering - Update CaseStudies to filter by AiAutomation category instead of brittle name-matching - Add AI Automation option to ProjectFilter dropdown - Refactor WhoIAm filtering to use ProjectCategory enum Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Create Pagination.razor with numbered pages, prev/next arrows, ellipsis for large page counts, and page info text - Create Pagination.razor.cs code-behind with TotalItems, PageSize, CurrentPage, and OnPageChanged parameters - Integrate pagination into WhoIAm with 5 projects per page - Auto-reset to page 1 on filter change - Auto-scroll to projects section on page navigation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… components - Extract ManageAppointmentCancel and ManageAppointmentReschedule code-behind into separate .razor.cs files - Simplify component markup - Update BookingTimeSlots styling Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Replace monolithic feature docs with numbered, structured files - Add feature docs README index - Update component architecture and UI design system docs - Remove legacy docs (AI_CHATBOT_DOCUMENTATION, BREVO_SMTP_MIGRATION, CANCEL_RESCHEDULE_PLAN, TAILWIND_CUSTOM_COLORS) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add AutomationProgressCard component with progress bar, stat counters, and terminal log animations that loop continuously - Include detailed XML summary comments on all lifecycle and animation methods explaining timing, easing, and synchronization logic - Add usage examples in Razor markup covering basic, tweaked, and fully custom configurations - Integrate component into Index page under Automation in Action section Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…lates Replace all NexTruzt.io EscrowApp-specific references with generic domain examples (Order, Customer, AppDbContext) across 5 instruction files: - blazor/component-patterns: EscrowDashboard → OrderDashboard - testing/testing-standards: EscrowTransactionBuilder → OrderBuilder - database/ef-core-patterns: EscrowDbContext → AppDbContext, fix applyTo - security/owasp-top10: Remove fintech-specific sections, generalize - resilience/polly-patterns: Stripe-specific → External API, fix applyTo applyTo patterns updated for ef-core and polly to use ** wildcards. All files are now immediately reusable as templates for any .NET project. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Remove all NexTruzt.io / EscrowApp project-specific references - Genericize root configs: AGENTS.md, CLAUDE.md, GEMINI.md - Genericize .github/copilot-instructions.md with generic Order domain - Genericize 10 instruction files and fix applyTo glob patterns - Genericize 42 SKILL.md files (removed author, updated descriptions) - Genericize 100+ skill reference files (code examples) - Fix .github/copilot-mcp.json, copilot-setup-steps.yml, lsp.json - Create memory-optimization skill (42nd skill, resolved phantom) - Add superpowers extension init log - Update CATALOG.md to v2.2.0 with 42 skills - Remove hardcoded API token from .claude/settings.json - Add sensitive .claude/ files to .gitignore - Genericize .claude/rules/ bridge files All configs now use generic MyApp/Order domain examples and are portable across different .NET/Blazor projects. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- 8 lifecycle hooks (build-reminder, security-scanner, doc-sync, etc.) - 10 rule bridges linking to .github/instructions/ - 42 skill bridges linking to .github/skills/ - Project settings.json (no secrets) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add Hero alternate components (Alternate, MorphingGeometry, TealGradient, WarmTealWash) - Add Legal feature: TermsOfService, PrivacyPolicy, FAQ with code-behind - Add code-behind for Footer, Header, SDLCProcess (code-behind pattern) - Refactor Header with improved responsive nav and scoped CSS - Refactor Footer with expanded layout - Update ChatFunction and SendEmailFunction API handlers - Improve InputValidator security hardening - Add ScrollToTopButton enhancements - Add timeline-observer.js for scroll animations - Update CloudZen.csproj dependencies - Update staticwebapp.config.json routing - Add OWASP security audit fixes documentation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Merge AGENTS.md + CLAUDE.md + GEMINI.md into single deduplicated AGENTS.md (-61%) - Trim .github instruction files from code examples to prose rules (-61%, 1267 lines) - Scope mvp-first + memory-optimization applyTo from **/* to code files only - Remove 42 duplicate skill folders from .github/skills (user folder is source of truth) - Archive CLAUDE.md + GEMINI.md as .archived Estimated system prompt reduction: ~47% -> ~20-23% Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…lobal user) All 42 bridge files now reference C:\Users\335286\.claude\skills\ (global leader) instead of the removed .github/skills/ project-level copies. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add DESIGN.md, design.json, and PRODUCT.md for brand, tokens, and product definition - Refactor Blazor components for color, contrast, and CTA accessibility per design system - Remove legacy hero components and related CSS - Add Mission.razor.css for new section styling - Improve FAQ accessibility, focus, and color contrast - Clarify case study titles in CaseStudyService - Update settings.json hook paths for reliability - Add config.json for Blazor WASM CSP/HTML config - Update docs and comments to reference new standards
…tity - Wire motion.css + scroll-reveal.js across all pages (Index, Contact, ManageAppointment, Services, Mission, Faq, Privacy, Terms, WhoIAm, Tickets, Header) - Strategic teal injection across 15 landing files (low-opacity bg gradients, teal card borders, teal eyebrow labels) - Header surface redesign: pearl wash + teal->orange brand-bridge accent + always-on teal hairline (.cz-header) - Restrained-pro motion utilities: icon-halo, step-number, panel-enter; dark-CTA gradient upgrade - FAQ accordion fix: animation-fill-mode: forwards for persistent panel visibility - Blazor reveal-class conflict fix: separate static .reveal wrapper from dynamic class children - Project/Profile components refactor for design-system alignment - Remove deprecated Hero.razor (HeroWarmTealWash is canonical) - Docs: expand 02_ui_color_design_system.md with motion + teal injection patterns Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Prevents .claude/settings.local_old.json (and similar .bak/.backup files) from being committed. Original leak occurred via settings.local_old.json which slipped past the narrow settings.local.json pattern.
…L gap ci-cd.yml referenced an unrelated project (SmartMenuOptim/Neon Postgres via EF Core) that never existed in this repo; real pipeline is azure-functions.yml + azure-static-web-apps.yml. Documented N8N_WEBHOOK_URL (required by BookAppointmentFunction.cs, missing from all deployment docs) and clarified the booking system's Neon Postgres DB is configured inside n8n itself, not an Azure resource. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
No code modifications were made; only context and comments are present in the diff for HeroWarmTealWash.razor.
Expanded and clarified deployment guides: - Updated references, repo URL, and added "Last synced" date - Strengthened CSP with connect-src for Function App - Listed all required env vars and Key Vault secrets (SMTP, Anthropic, n8n, CORS, rate limiting) - Marked completed checklist items; added new ones for env setup and testing - Clarified that all secrets are server-side only; removed outdated client-side secret instructions - Updated architecture diagrams and code samples for current secure flow
Switched to single-environment deploy: only pushes/merges to master trigger production deployment; PRs to master now run build checks only, with no deploy or preview environments. Removed all staging/blue-green workflow logic, deleted appsettings.Staging.json, and updated documentation to reflect the new deployment strategy.
|
Important Review skippedToo many files! This PR contains 346 files, which is 246 over the limit of 100. To get a review, narrow the scope: Upgrade to a paid plan to raise the limit. Usage-priced reviews support at most 300 files. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (12)
📒 Files selected for processing (369)
You can disable this status message by setting the ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
… conflicts Workflow conflicts (azure-functions.yml, azure-static-web-apps.yml): kept development's simplified no-blue-green version per this session's decision to drop staging entirely. SendEmailFunction.cs: kept both sides - merged in master's Brevo SMTP certificate validation hardening (OWASP A02) alongside development's current file location/structure. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Summary
docs/02-deployment/) resynced to match live architectureTest plan
productionGitHub environment requires manual approval on merge — approvedeploy-productionin Actions🤖 Generated with Claude Code