Commit Graph

13 Commits

Author SHA1 Message Date
AmirReza Jamali 04545fc50e chore: Remove favicon and enhance global styles
- Delete unused favicon.ico file to clean up project assets
- Add smooth scrolling behavior to html element for improved user experience
- Refactor box-shadow property in Toastify styles for better readability
- Update button states in Contact Us and Inquiries forms to include hcaptchaToken validation
2026-04-13 14:25:25 +03:30
AmirReza Jamali 3e5e135b47 feat(security): Add XSS protection with DOMPurify sanitization
- Add sanitize.ts utility module with sanitizeText(), sanitizeUrl(), and sanitizeHtml() functions
- Implement server-side HTML entity escaping and client-side DOMPurify sanitization
- Add comprehensive test suite for sanitization functions in lib/__tests__/sanitize.test.ts
- Secure marketing pages by sanitizing all CMS data (hero, features, challenges, advantages, footer)
- Secure inquiries form by sanitizing field labels, placeholders, and button text
- Add SECURITY.md documentation outlining XSS protection measures and best practices
- Add USAGE_EXAMPLES.md with detailed examples of sanitization function usage
- Add XSS_PROTECTION_SUMMARY.md with implementation overview
- Update package.json to include dompurify (^3.3.0) dependency
- Protects against common XSS attack vectors including script injection, event handlers, and malicious URLs
2025-11-30 11:14:42 +03:30
AmirReza Jamali cb9c7c8970 feat(marketing): Make marketing page content configurable via CMS data
- Replace hardcoded centerFrames array with CMS data from features.cards
- Update hero section to use CMS data for title, description, button text and link
- Migrate features section title and description from hardcoded text to CMS
- Replace hardcoded challenges section with dynamic CMS data for title, description and cards
- Update advantages section to use CMS data for title and cards
- Normalize CMS field names from PascalCase to snake_case (Title → title, ButtonLink → button_link, etc.)
- Replace Image component with ImageWithFallback for better error handling on dynamic images
- Add unoptimized prop to images to support dynamic CMS image URLs
- Remove 29 lines of hardcoded content, making the page fully data-driven from CMS
2025-11-29 12:27:14 +03:30
AmirReza Jamali 018f1109bd fix(marketing): replace clipboard icon with file icon 2025-11-29 11:15:33 +03:30
AmirReza Jamali cfe943d269 feat(inquires): Make contact form configurable via CMS data
- Add CmsContact type support to FooterForm, Inquires, and InquiresForm components
- Make form fields dynamic by accepting contactData prop with configurable Fields array
- Add placeholder prop to InputGroup component for enhanced field customization
- Replace hardcoded form fields with dynamic field mapping from CMS data
- Support dynamic form title and description from contactData
- Use CMS-provided submit button text with fallback to default "Submit"
- Implement field-level validation configuration including required field handling
- Auto-detect input type based on field name (email, phone, text)
- Pass contact data from marketing page to FooterForm component
- Maintain backward compatibility with default fields when contactData is not provided
2025-11-23 11:31:52 +03:30
AmirReza Jamali 807a77992e feat(analytics): Add Firebase Analytics integration with page tracking
- Initialize Firebase Analytics with configuration and client-side setup
- Create GoogleAnalytics component to track page views on route changes
- Add analytics utility functions for tracking custom events (button clicks, form submissions, link clicks, searches)
- Integrate GoogleAnalytics component into home, not-found, and marketing layouts with Suspense boundary
- Add firebase dependency to package.json
- Enable automatic page view tracking with pathname and search parameters
2025-11-22 10:56:40 +03:30
AmirReza Jamali 4839c325a5 Bind cms page 2025-11-15 09:43:45 +03:30
AmirReza Jamali efbdb82535 feat: Add CMS context, hooks, and types for managing CMS data
- Implemented CmsContext and CmsProvider for global state management of CMS data.
- Created a custom hook `useGetCms` to fetch CMS data using React Query.
- Defined TypeScript interfaces for CMS response and its related data structures.
- Added error handling for data fetching in both the service and context.
2025-11-11 15:22:12 +03:30
AmirReza Jamali 910e8aed89 feat(marketing): Add card hover effects and responsive heading
This commit introduces two UI enhancements to the marketing page to improve user experience and visual appeal.

- Adds a hover effect to the feature cards, causing them to scale up and change background color. This provides visual feedback and makes the section more interactive.
- Adjusts the main heading font size to be responsive, making it smaller on mobile devices (`text-4xl`) and larger on medium screens and up (`md:text-5xl`) for better readability and layout.
2025-11-02 11:45:39 +03:30
AmirReza Jamali 6c7cc6d3ee feat(ui): Overhaul homepage and layout styling for responsiveness
Refactors the styling across the main layout, homepage, and contact page to improve responsiveness and visual consistency.

Key changes include:
- Adjusted font sizes, spacing, and padding on the homepage for better scaling on different screen sizes.
- Simplified the hero section image and layout.
- Updated the footer design, removing the background image and changing text color from white to black for better readability.
- Replaced React fragments with `<main>` tags for improved semantic HTML on the contact page.
- Streamlined header and content padding in the main layout.
2025-10-26 15:30:29 +03:30
AmirReza Jamali 3d626daa0a refactor(responsive): Adjust breakpoint from md to lg for better layout
The previous `md` breakpoint (768px) caused the desktop layout to activate too early, resulting in a cramped appearance on tablet-sized screens.

This commit updates the responsive design by changing the primary breakpoint from `md` to `lg` (1024px) across the home page, contact page, and main layouts. This change ensures a more appropriate and visually balanced layout is maintained on medium-sized devices, improving the overall user experience.
2025-10-26 10:42:13 +03:30
AmirReza Jamali a78726303a refactor(seo): Improve page metadata and HTML semantics
This commit updates the page metadata (title and description) from the default Next.js placeholders to be descriptive of the Opp lens application, improving SEO.

Additionally, it refactors the HTML structure for better semantics and accessibility:
- Replaced generic `div` and fragment tags with appropriate semantic elements like `main`, `article`, `li`, and `small`.
- Corrected the heading hierarchy for better document structure.
- Fixed image source paths by making them absolute to prevent broken images.
2025-10-26 10:38:46 +03:30
AmirReza Jamali 71094f6c86 feat: Refactor contact form and improve 404 page
This commit refactors the contact form for better reusability and moves it from the global footer to a dedicated section on the homepage. Additionally, it enhances the user experience on the 404 page.

Key changes:
- The `ContactUsForm` component is now configurable with props for grid layout (`columnsPerRow`) and button text, making it more versatile.
- The contact form has been removed from the shared footer in the main layout and is now explicitly included only on the homepage.
- The 404 "Not Found" page has been updated to include a direct link to the homepage for easier navigation.
- Minor style adjustments were made to the 404 page layout and input field padding for improved visual consistency.
2025-10-25 16:11:23 +03:30