Commit Graph

63 Commits

Author SHA1 Message Date
Bastian Masanek
ca0c4dddf4 Update progress and refine cart UI with bug fixes and new educator products page
- Updated last modified date and overall progress in the project documentation.
- Enhanced cart UI by fixing the Warenkorb button hover bug, improving CartItem layout, and refining the quantity selector for better user experience.
- Improved styling of the Warenkorb button for better visual consistency.
- Created a new Educator Products page to showcase educator annual passes with optimized content.

These changes aim to enhance the shopping cart functionality and user experience for educators.
2025-11-03 14:08:11 +01:00
Bastian Masanek
e252d68f0c Add educator annual pass functionality and update product listings
- Introduced a new page for educator annual passes, displaying relevant products with a dedicated layout and loading/error states.
- Updated AreaTabs component to include the educator tab and adjusted routing logic.
- Modified useAuth to redirect users to the products page after login.
- Adjusted mock product prices and stock quantities in the database seeding script to reflect new pricing strategy.

These changes enhance the user experience for educators and improve product visibility in the application.
2025-11-03 14:03:29 +01:00
Bastian Masanek
ebb6dc0b27 Refactor CartFAB and CartSidebar components for improved UI and functionality
- Simplified Transition component structure in CartFAB.vue for better readability.
- Enhanced FAB button size and adjusted ShoppingCart icon scale for improved visibility.
- Updated Badge component styling for better alignment and visual appeal.
- Modified CartSidebar.vue to adjust empty state layout, improving user experience when the cart is empty.

These changes aim to enhance the overall user interface and interaction within the shopping cart components.
2025-11-03 13:18:26 +01:00
Bastian Masanek
b372e2cf78 Implement shopping cart functionality with UI components and API integration
- Added CartItem, CartSummary, CartEmpty, CartSidebar, and CartSheet components for managing cart display and interactions.
- Integrated useCart and useCartUI composables for cart state management and UI control.
- Implemented API endpoints for cart operations, including fetching, adding, updating, and removing items.
- Enhanced user experience with loading states and notifications using vue-sonner for cart actions.
- Configured session management for guest and authenticated users, ensuring cart persistence across sessions.

This commit completes the shopping cart feature, enabling users to add items, view their cart, and proceed to checkout.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2025-11-03 12:43:13 +01:00
Bastian Masanek
9d0e77fc98 Add cart button to desktop header with price display
Implemented desktop cart button in navigation header that displays:
- Shopping cart icon with item count badge (red, top-right)
- Total cart price in German locale (EUR)
- Click opens CartSidebar via useCartUI() composable
- Responsive: visible only on lg breakpoint and above
- Hidden on mobile (FAB is used instead)

Uses useCart() composable for itemCount and total, with proper
Intl.NumberFormat formatting for EUR display.

Also standardized CartFAB price formatting to use Intl.NumberFormat
for consistency with rest of codebase.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 11:41:32 +01:00
Bastian Masanek
f9a2857abe Hide role 'company' 2025-11-03 11:07:46 +01:00
Bastian Masanek
863fa671cb Update progress and prioritize cart and checkout phases 2025-11-03 11:03:21 +01:00
Bastian Masanek
d6404434a3 Refactor database schema for roles and visibility management
- Updated the roles table to use `code` as the primary key, enhancing readability and simplifying junction tables.
- Modified `user_roles` and `product_role_visibility` tables to reference `role_code` instead of `role_id`, maintaining many-to-many relationships.
- Added foreign key constraints and created new indexes to optimize queries.
- Removed the previous migration file that was no longer needed, ensuring a cleaner migration history.
- Updated related documentation to reflect the new schema changes and their benefits.
2025-11-03 10:54:58 +01:00
Bastian Masanek
14fc293ebe Refactor AreaTabs component to correct product area labels and routing logic
- Updated labels for 'experimenta' and 'makerspace' to singular form for consistency.
- Adjusted computed property to return simplified area identifiers for improved routing clarity.
2025-11-03 10:45:45 +01:00
Bastian Masanek
68ab42f2f4 Refactor roles management to use role code as primary key
- Updated the roles table schema to use role code as the primary key, enhancing readability in junction tables.
- Modified related tables (user_roles, product_role_visibility) to reference role code instead of role ID.
- Adjusted seeding logic and utility functions to accommodate the new primary key structure, ensuring consistent role management across the application.
- Added a migration script to facilitate the database schema changes.
2025-11-03 10:45:11 +01:00
Bastian Masanek
a6d09d76fd Update CLAUDE.md to clarify role definitions and database schema
- Added details about the primary key for the `roles` table, emphasizing its enum nature and direct readability in junction tables.
- Included information on foreign key relationships for `user_roles` and `product_role_visibility` referencing `roles.code`.
- Documented the auto-assignment of the 'private' role for new users upon first login and clarified the use of UUID primary keys in most tables.
2025-11-03 10:44:52 +01:00
BaM
ba0267ef88 Add Docker management scripts to package.json 2025-11-02 17:16:49 +01:00
Bastian Masanek
cb4810893c Add automatic role assignment for new and existing users
- Implemented auto-assignment of the 'private' role for new users upon first login, ensuring they have access to products.
- Added a safety check to assign the 'private' role to existing users without roles during login.
- Updated relevant documentation to reflect these changes in role management and visibility patterns.
2025-11-02 10:40:52 +01:00
Bastian Masanek
268d91f548 Enhance database management with cleanup and reset scripts
- Added a new database cleanup script to remove all data while preserving the schema, facilitating a clean state before seeding.
- Updated package.json to include new commands for database cleaning and resetting.
- Modified schema definitions to use an array format for index and constraint definitions, improving clarity and consistency.
- Updated product seeding logic to utilize role-based assignments directly from mock data, enhancing flexibility in product-role relationships.
2025-11-02 10:35:07 +01:00
Bastian Masanek
ff9960edef Add role-based visibility and management features for products
- Introduced a role-based visibility system for products, ensuring that only users with approved roles can view specific products.
- Added new database tables for roles, user roles, and product role visibility to manage access control.
- Implemented utility functions for role management, including fetching approved roles, checking product visibility, and assigning roles to users and products.
- Updated API endpoints to filter products based on user roles, enhancing security and user experience.
- Prepared the database schema for future role request and approval workflows in upcoming phases.
2025-11-02 10:17:40 +01:00
Bastian Masanek
6e4f858883 Refactor AreaTabs component to simplify product area IDs
- Updated product area IDs for 'experimenta' and 'makerspace' to enhance clarity and navigation consistency.
- Maintained existing functionality while improving the overall structure of the AreaTabs component.
2025-11-02 10:17:23 +01:00
Bastian Masanek
abdec40119 Refactor AreaTabs component to update product area identifiers and visibility settings
- Changed product area IDs for 'experimenta' and 'makerspace' to simplify navigation.
- Updated visibility settings for areas to ensure 'experimenta' and 'labs' are now visible.
- Adjusted logic in computed property to reflect new area IDs for improved routing consistency.
2025-11-02 10:17:04 +01:00
Bastian Masanek
8b8e6fbb14 Update settings.local.json to add database migration command for Playwright integration 2025-11-02 10:16:29 +01:00
Bastian Masanek
82b5e61f94 Refactor ProductCard component to enhance clickability and visual indicators
- Updated the template structure to make the entire card clickable by wrapping the CTA button in a div instead of a NuxtLink.
- Improved the visual indication of the CTA button with clearer comments and hover effects for better user experience.
2025-11-02 09:34:38 +01:00
Bastian Masanek
d6bed8fb50 Import CheckCircle icon from lucide-vue-next in product detail demo page for enhanced visual representation 2025-11-02 09:31:07 +01:00
Bastian Masanek
e55c7613cd Add Role Switcher component to styleguide with detailed usage instructions
- Introduced RoleSwitcher component to the styleguide, allowing users to switch between different roles (individual, educator, company).
- Enhanced the styleguide with a live example, design features, and component usage instructions for better clarity and usability.
- Updated layout to include a new section for the Role Switcher, improving overall navigation and user experience.
2025-11-02 09:24:36 +01:00
Bastian Masanek
f4d47b8399 Update settings.local.json to include new browser command for Playwright integration 2025-11-02 09:23:34 +01:00
Bastian Masanek
0c875af73c Refactor RoleSwitcher component for improved clarity and consistency
- Updated role descriptions for clarity by removing unnecessary phrases.
- Enhanced template structure for better readability and consistency in styling.
- Adjusted dropdown menu width for improved layout and user experience.
2025-11-01 20:18:20 +01:00
Bastian Masanek
a826ea1344 Implement experimenta product listing page and enhance navigation components
- Added a new page for displaying experimenta annual passes, integrating ProductCard and ProductGrid components for product presentation.
- Updated API to filter products by category, allowing for specific product queries.
- Enhanced navigation components, including AreaTabs and RoleSwitcher, to improve user experience and accessibility.
- Refactored existing components for better styling consistency and responsiveness.
- Improved dropdown menu components with updated styles and hover effects for better usability.
2025-11-01 20:08:28 +01:00
Bastian Masanek
81495d5e17 Enhance navigation and UI components for improved user experience
- Added new AppHeader and BottomNav components for better navigation across the application.
- Introduced AreaTabs for product area navigation and integrated RoleSwitcher for user role management.
- Created CartButton component to display cart status and item count.
- Implemented UserMenu with login/logout functionality and user greeting.
- Added Badge component for notifications and status indicators.
- Updated layout to accommodate new navigation components and ensure mobile responsiveness.
- Created product detail demo page to showcase design patterns and features.
- Enhanced existing components with improved styling and functionality.
2025-11-01 19:51:02 +01:00
Bastian Masanek
7ab80a6635 Add product detail and listing pages with API integration
- Created a new product detail page to display individual product information, including images, descriptions, and pricing.
- Implemented a product listing page to showcase all available products using the ProductCard and ProductGrid components.
- Added API endpoints for fetching product data, ensuring only active products are returned.
- Introduced a database seed script to populate the database with initial mock product data for development and testing.
- Updated settings to include new database seeding command and adjusted routing for product links.
2025-11-01 19:07:59 +01:00
Bastian Masanek
9150af3ac2 Refactor ProductCard component for improved readability and styling consistency
- Simplified template structure by removing unnecessary line breaks and indentation.
- Enhanced badge and discount badge styles for better visual appeal.
- Updated class names for consistency and improved hover effects on buttons.
- Maintained functionality while improving code clarity and maintainability.
2025-11-01 18:26:16 +01:00
Bastian Masanek
5115a4db82 Add ProductCard and ProductGrid components for mobile-optimized product listings
- Introduced ProductCard component to display individual product details, including image, title, description, price, and optional badges.
- Added ProductGrid component to create a flexible grid layout for displaying multiple ProductCard components, supporting 1-4 columns.
- Created a demo page to showcase the ProductCard and ProductGrid components in action, highlighting their responsive design and features.
- Updated styleguide to include links and descriptions for the new components.
2025-11-01 18:19:31 +01:00
Bastian Masanek
bff23bdaa0 Add new browser resize command to settings.local.json 2025-11-01 18:19:16 +01:00
Bastian Masanek
e48f3b5ece Refactor session encryption variable names for consistency
- Changed `NUXT_SESSION_SECRET` to `NUXT_SESSION_PASSWORD` across configuration files and documentation to align with the usage in nuxt-auth-utils.
- Updated related comments and documentation to reflect the new variable name, ensuring clarity for developers and users.
2025-11-01 16:22:00 +01:00
Bastian Masanek
d231081b08 Integrate ConfigProvider to manage body scrolling behavior during modal interactions
- Added ConfigProvider component to prevent body scrolling when modals are open, enhancing user experience.
- Included comments explaining the rationale behind the scroll-body setting to avoid layout shifts caused by dropdown menus.
2025-11-01 16:13:04 +01:00
Bastian Masanek
55ff1f71e8 Add test credentials and guidelines for staging environment in CLAUDE.md 2025-11-01 15:36:33 +01:00
Bastian Masanek
cc35636d1a Implement Password Grant Flow for Authentication and Enhance User Experience
- Introduced Password Grant Flow for user authentication, allowing direct login with email and password.
- Updated `useAuth` composable to manage login and logout processes, including Single Sign-Out from Cidaas.
- Enhanced user interface with a new `UserMenu` component displaying user information and logout functionality.
- Updated homepage to show personalized greetings for logged-in users and a login prompt for guests.
- Added logout confirmation page with a countdown redirect to the homepage.
- Documented the implementation details and future enhancements for OAuth2 flows in CLAUDE.md and other relevant documentation.
- Added test credentials and guidelines for automated testing in the new TESTING.md file.
2025-11-01 15:23:08 +01:00
Bastian Masanek
83ba708023 Remove .playwright-mcp 2025-10-31 21:19:47 +01:00
Bastian Masanek
be06e16880 Refactor secure connection handling in LoginForm and introduce SecureConnectionIndicator component
- Remove inline secure connection checks from LoginForm and replace them with a new SecureConnectionIndicator component.
- The SecureConnectionIndicator displays secure connection status messages based on the current protocol.
- Clean up LoginForm template for improved readability and maintainability.
2025-10-31 21:10:54 +01:00
Bastian Masanek
e7939b9045 Update experimenta button documentation to reflect component name change
- Replace instances of <UiButtonButton> with <Button> in the documentation for the experimenta button.
- Ensure consistency in the examples provided for button, link, and NuxtLink usage.
2025-10-31 20:12:57 +01:00
Bastian Masanek
f603840f34 Refactor secure connection handling in LoginForm component
- Change isSecureConnection from computed to ref and initialize it on component mount.
- Wrap secure connection status messages in ClientOnly to prevent rendering issues during server-side rendering.
2025-10-31 20:05:26 +01:00
Bastian Masanek
75c59d2783 Update RegisterForm links to point to external privacy policy and terms of service
- Change links in the registration form to direct users to the external Datenschutzerklärung and Nutzungsbedingungen pages.
- Ensure links open in a new tab for better user experience.
2025-10-31 20:05:01 +01:00
Bastian Masanek
c385779221 Enhance FormMessage and styleguide for improved accessibility and user feedback
- Add orange AlertCircle icon to FormMessage component for better visibility of validation errors.
- Update styleguide to demonstrate new alert components with icons for error, success, and warning messages.
- Refactor CSS for status messages and form error messages to improve layout and accessibility compliance.
2025-10-31 17:40:10 +01:00
Bastian Masanek
d9f08bbef2 Enhance user communication and improve UI components
- Update CLAUDE.md to mandate informal "Du" form for user communication in all UI text and emails.
- Modify LoginForm and RegisterForm components to reflect informal language in validation messages and placeholders.
- Add secure connection indicators in LoginForm for user awareness.
- Update alert component styles for better visual feedback.
- Introduce experimenta company information document for user reference.
2025-10-31 17:28:07 +01:00
Bastian Masanek
c2c706ebcf Refactor login error handling and improve user feedback
- Update LoginForm component to display error messages directly from the authentication response.
- Modify useAuth composable to handle login errors more effectively, ensuring proper error messages are thrown.
- Enhance login API response to return structured error messages for invalid credentials.
- Adjust Cidaas utility to throw specific errors for invalid username/password scenarios.
2025-10-31 14:51:15 +01:00
Bastian Masanek
7c7c4fcb6f Implement direct login functionality with email and password
- Update login API to support direct authentication via email and password, removing the OAuth2 redirect flow.
- Modify LoginForm component to include password field and validation.
- Refactor useAuth composable to handle login with both email and password.
- Remove unnecessary OAuth2 callback handler and PKCE utilities.
- Update relevant documentation and error handling for the new login method.
2025-10-31 14:27:38 +01:00
Bastian Masanek
e71316dfe7 Update local settings and refactor FormField component
- Add new entries to settings.local.json for additional functionality
- Refactor FormField.vue to change slot prop name for better clarity
2025-10-31 12:36:32 +01:00
Bastian Masanek
9682461eea Refactor Tabs components for improved styling
- Update TabsList.vue to adjust height and border radius for a more modern look
- Modify TabsTrigger.vue to enhance padding, font size, and line height for better readability and user experience
2025-10-31 12:27:40 +01:00
Bastian Masanek
f54b1f56d5 Add internal authentication configuration and middleware support
- Enable internal authentication via environment variable in .env.example
- Update nuxt.config.ts to include internalAuthEnabled check
- Modify internal-auth middleware to conditionally enforce authentication based on the new configuration
2025-10-31 12:15:51 +01:00
Bastian Masanek
f8572c3386 Implement authentication phase with Cidaas OAuth2 integration
- Add authentication middleware to protect routes
- Create API endpoints for login, logout, registration, and user info
- Develop UI components for login and registration forms
- Integrate VeeValidate for form validation
- Update environment configuration for Cidaas settings
- Add i18n support for English and German languages
- Enhance Tailwind CSS for improved styling of auth components
- Document authentication flow and testing procedures
2025-10-31 11:44:48 +01:00
Bastian Masanek
749d5401c6 Update Claude Code local settings 2025-10-30 14:34:30 +01:00
Bastian Masanek
bc4f9f4eee Add Makerspace annual pass assets
- Add Makerspace 2025 Photoshop source file
- Add exported JPG image for web use
2025-10-30 14:34:28 +01:00
Bastian Masanek
934635ac77 Update task tracking for database phase progress
- Mark database setup tasks as completed
- Update progress percentages and status
- Document database implementation notes
2025-10-30 14:34:25 +01:00
Bastian Masanek
38056e04d8 Enhance styling with updated Tailwind config and CSS
- Extend Tailwind config with experimenta brand colors
- Improve CSS base styles and component formatting
- Update index page with refined typography
2025-10-30 14:34:21 +01:00