Commit Graph

34 Commits

Author SHA1 Message Date
AmirReza Jamali a41fc01921 refactor(ApexChart): Simplify x-axis configuration by removing datetime formatting
- Remove unnecessary datetime type configuration from xaxis
- Remove custom date formatter function that was overcomplicating label display
- Keep categories mapping for x-axis labels
- Simplifies chart configuration while maintaining functionality
2025-11-30 12:20:55 +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 72b61aa6a0 refactor(inquires): Standardize contact data field names to snake_case
- Update Title field reference to title in contact form heading
- Update Description field reference to description in contact form subtitle
- Align with existing snake_case naming convention established in CMS data types
- Ensure consistency across all configurable form fields
2025-11-29 14:03:52 +03:30
AmirReza Jamali 77dcfc36fd refactor(inquires): Standardize form field types to snake_case
- Convert field property names from PascalCase to snake_case (Name → name, Label → label, Placeholder → placeholder, Required → required)
- Update contactData property access from PascalCase to snake_case (Fields → fields, SubmitButtonText → submit_button_text)
- Update all field references throughout the component to use new snake_case naming convention
- Maintain consistency with standardized CMS data types established in previous refactoring
2025-11-29 13:50:56 +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 7ecb9a1084 fix(ApexChart): Remove unnecessary tickAmount configuration from chart
- Remove hardcoded tickAmount: 0 from xaxis configuration
- Allow ApexCharts to automatically determine optimal tick spacing
- Improves chart readability by using library's default tick calculation logic
2025-11-23 11:24:20 +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 9f16f89338 feat: Update amount display for EU Public market and conditionally show 'Trillion' 2025-11-18 17:27:42 +03:30
AmirReza Jamali 5e842853e1 fix: Remove 'www.' from host in RootLayout for cleaner domain handling 2025-11-18 16:45:43 +03:30
AmirReza Jamali c66fa85075 feat: Update NavigationBar to accept host as a prop and wrap in Suspense 2025-11-18 16:28:27 +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 4ee77835a2 fixed styles 2025-10-28 17:16:27 +03:30
AmirReza Jamali a93186a87f changed adv items 2025-10-28 17:10:13 +03:30
AmirReza Jamali 645b397396 feat(form): enhance and refactor contact form to inquiries form
This commit refactors the contact form into a more robust inquiries form, relocating it from `/contact-us` to a new `/inquires` route.

Key changes include:
- Renamed and moved the component from `ContactUs` to `Inquires`.
- Updated form fields: removed "Company Name", added "Message", and renamed "Work Email" and "Phone Number" for clarity.
- Implemented comprehensive client-side validation for all fields using `react-hook-form`.
- Added a loading state to the submit button to provide user feedback during submission.
- The form now automatically resets upon successful submission.
- Introduced new reusable `TextareaGroup` and `Loading` components to support the enhanced form functionality.
2025-10-27 11:33:18 +03:30
AmirReza Jamali ca911091f4 feat(nav): Make Login button a functional link
The Login button in the navigation bar was previously a static UI element. This commit converts it into a functional Next.js `<Link>` component.

The link now directs users to `https://app.opplens.com` and opens in a new tab (`target="_blank"`) to provide access to the application's login page. Additionally, a vertical margin has been added to the navigation bar for better spacing.
2025-10-27 10:13:34 +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
AmirReza Jamali f57373b476 add: Not found page 2025-10-22 17:51:15 +03:30
AmirReza Jamali 349f1137f7 feat(ui): Enhance homepage responsiveness and layout
This commit introduces several UI improvements to enhance the responsive design and visual appeal of the homepage and main layout.

Key changes include:
- Adjusted the main header to be centered on mobile devices for better alignment.
- Refined the hero section on the homepage with responsive text sizes and improved spacing.
- Modified the "dynamic island" image container to adapt its size and position across different screen sizes.
- Improved typography and layout in the "democratizing tenders" section for better readability.
- Reorganized the contact page into a Next.js route group for better project structure.
2025-10-22 13:47:43 +03:30
AmirReza Jamali 1185aea022 fixed: font-sizing 2025-10-21 15:26:06 +03:30
AmirReza Jamali b556ceed98 feat(landing): enhance hero section and update page backgrounds
This commit introduces a significant visual overhaul to the landing page to create a more dynamic and engaging user experience.

Key changes include:
- Replaced the static mobile phone SVG in the hero section with an animated GIF, complete with a "dynamic island" overlay for a more modern look.
- Updated the main page background from a full cover image to a more subtle header background image (`header-bg.svg`).
- Added a new background layer (`bottom-bg.svg`) near the footer to create more visual depth and separation for the contact section.
- Numbered the three main feature descriptions ("1. Discover", "2. Prepare", "3. Win") for improved clarity and flow.
2025-10-21 15:17:04 +03:30
AmirReza Jamali e2a0df5fc4 feat(ui): Enhance contact page and add location flag to footer
This commit introduces several UI improvements to enhance user experience and visual appeal.

On the contact page, a new heading "Unlock Your Growth Potential" and a descriptive subheading have been added above the form. This provides better context and a stronger call-to-action for users.

In the footer, the location information now includes a flag icon for better visual identification. This was achieved by updating the `ContactInfo` component to accept an optional icon source.

Additionally, various styling adjustments have been made for improved responsiveness and visual consistency across the homepage and footer.
2025-10-19 11:18:06 +03:30
AmirReza Jamali 8d8fc823aa fixed minor issues 2025-10-18 22:28:17 +03:30
AmirReza Jamali c62154ea4c fixed z index 2025-10-18 20:58:30 +03:30
AmirReza Jamali aad539e1a6 feat: redesign homepage and early access page
This commit introduces a comprehensive redesign of the homepage and refactors the "Contact Us" page into a dedicated "Get Early Access" page.

Key changes include:
- **Homepage:** A complete overhaul with new sections, including a hero, feature highlights, and a problem/solution section to better communicate the product's value proposition.
- **Early Access Page:** The former "Contact Us" page is now repurposed for early access sign-ups, with updated copy and a more focused call-to-action.
- **Component Refactoring:**
    - The `InputGroup` component has been extracted from the form into a reusable component (`app/_components/InputGroup.tsx`) for better modularity.
    - The `CenterFrame` component has been updated to support images and new props (`src`, `title`, `alt`) to fit the new homepage design.
- **Layout Improvements:** The early access form now uses a two-column grid layout on larger screens for improved user experience.
2025-10-18 20:44:30 +03:30
AmirReza Jamali 31d03b57d6 feat: Refactor layout and add toast notifications
This commit introduces a major structural refactoring by creating a shared application layout and integrates a toast notification system.

Key changes:
- A new `layout.tsx` file now contains the common Header and Footer components, ensuring a consistent structure across all pages.
- The main `page.tsx` has been simplified to only contain its specific content, with layout elements removed.
- The `react-toastify` library has been added to provide user feedback through toast notifications.
- Custom CSS styles have been applied to the toast notifications for a branded look and feel, including different gradient backgrounds for success, error, warning, and info states.
- The `.gitignore` file was updated to explicitly track the `.env` file, likely for an example configuration.
2025-10-15 17:12:09 +03:30
AmirReza Jamali cd471695b7 feat: build initial landing page
This commit introduces the first version of the Opp lens landing page, replacing the default Next.js starter content.

The new page is designed to attract SMEs by showcasing the AI-powered tender management platform. It includes several key sections:
- A hero section with a clear value proposition.
- Sections detailing the problem, how the platform works, its features, and its benefits.
- A call-to-action form for users to sign up for early access.
- A comprehensive footer with contact and social media links.

Key changes include:
- **`app/page.tsx`**: Completely rewritten to build the landing page structure and content.
- **`app/globals.css`**: Updated with a new dark theme, custom brand colors, and a gradient text utility class for headings.
- **Dependencies**: Added `axios` to handle the early access form submission.
- **SEO**: Implemented detailed metadata for improved search engine visibility.
2025-10-14 16:23:00 +03:30
AmirReza Jamali 27efcf7137 init 2025-10-14 12:24:15 +03:30