mirror of
https://github.com/VladSez/easy-invoice-pdf
synced 2026-05-01 18:37:18 +00:00
26 commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
5a4e9debc1
|
feat: add /?template=stripe|default to url, implement URL compression logic (#130)
* feat: add debug local storage UI and update README; include new template parameter handling in invoice form * feat: add URL compression logic when generating link to invoice to reduce url length + add unit tests + improved existing e2e tests * ci: remove type check step from unit tests workflow to streamline CI process * test: update e2e tests for Stripe invoice sharing logic and template; increase timeout for visibility checks * test: refactor e2e tests for invoice generation and sharing; update element selectors and enhance URL disallow rules in robots.txt * chore: enhance README with detailed features and update about page references; add GitHub star CTA component * chore: update configuration files for Prettier, run prettify across the project * chore: run dedupe * test: add e2e tests for Open Graph meta tags in invoice templates; verify correct rendering for default and Stripe templates * chore: remove @stagewise/toolbar-next package and related development toolbar component from the project |
||
|
|
205f9bc234
|
feat: stripe invoice template, new CTA toasts, cleanup landing page + other improvements (#118)
* feat: enhance Android PDF viewer with error handling and memoization - Added error handling for PDF loading failures in AndroidPdfViewer, utilizing Sentry for logging and user-friendly toast notifications. - Implemented memoization for the InvoicePdfTemplate to optimize rendering performance. - Updated layout.tsx to include necessary CSS for PDF rendering. - Adjusted index.tsx comments for clarity on viewer types. * feat: add new toasts, cleanup landing page, add stripe template * feat: enhance PDF footer and update tests for dynamic content - Introduced a new InvoiceFooter component to modularize footer rendering in PDF templates, improving code organization and reusability. - Updated PDF tests to verify dynamic content in footers, including current month/year and payment due date, ensuring accurate invoice representation. - Added PROD_WEBSITE_URL to config for consistent URL usage across components. - Improved Telegram message handling with cache control headers for better performance. * feat: implement invoice sharing logic and logo handling for stripe template - Added state management for sharing invoices, including validation for logos that exceed URL length limits. - Updated the share invoice button to reflect sharing capabilities based on logo presence. - Introduced logo upload functionality with validation for file type and size, enhancing user experience. - Refactored invoice form to disable sharing when a logo is present in Stripe templates, ensuring compliance with URL constraints. - Improved toast notifications for user feedback on sharing and logo upload actions. * feat: update invoice descriptions and enhance date handling in PDF templates - Updated invoice descriptions in multiple languages to clarify that the tool runs entirely in the browser. - Refactored date handling in the Stripe template components to ensure accurate formatting based on the invoice's language settings. - Introduced a new InvoiceBody component to modularize the PDF rendering process, improving code organization and reusability. - Enhanced the StripeDueAmount and StripeFooter components to reflect the updated date logic and improve overall clarity in the invoice presentation. - Added localization support for date formatting using dayjs across various components. - Added new currencies * chore: remove unused vercel.json and add new e2e tests for invoice sharing and PDF generation - Deleted the unused vercel.json configuration file. - Updated the about page test to reflect changes in the description for clarity. - Removed redundant error message checks in the invoice form tests. - Added new e2e tests for PDF generation and sharing logic specific to the Stripe template, ensuring comprehensive coverage of invoice functionalities. * feat: enhance umami tracking with invoice template data and improve error handling * refactor: improve tooltips text and design, improve error handling and test assertions in invoice form and logo upload utilities - Enhanced error handling in the logo upload function to ensure input elements are present and base64 data is provided. - Updated e2e tests for the invoice generator page to use more reliable URL assertions. - Refactored invoice form logic to simplify sharing validation based on template and logo presence. - Improved button accessibility and user experience by clarifying aria-disabled attributes in various components. * refactor: update CTA toast logic and improve button components - Changed the timer for showing the CTA toast from 30 seconds to 40 seconds. * fix tests * fix: update date formatting in general information section to respect locale settings * feat: add changelog page with mdx support - Added support for MDX files in the Next.js configuration, allowing for rich content in the changelog. - Introduced a new changelog layout and page structure to display updates effectively. - Implemented dynamic routing for individual changelog entries, improving navigation and user experience. - Enhanced the footer component with subscription functionality and improved styling. - Updated translations to include changelog links across multiple languages. - Added new components for date formatting and project logo descriptions to enhance the changelog presentation. * feat: add environment configuration and update social links in tests - Created a new .env.example file to define environment variables for server and client configurations, including Sentry, Resend, Redis, and personal information for invoices. - Updated e2e tests to utilize GITHUB_URL and TWITTER_URL from the config for social media links, enhancing maintainability and consistency across the application. - Refactored footer and about page components to use dynamic URLs for GitHub and Twitter, improving code clarity and reducing hardcoded values. * chore: update environment configuration and README for clarity - Updated .env.example to set default values for Sentry and Google Drive API configurations, enhancing clarity for new developers. - Modified env.ts to remove minimum length validation for environment variables, simplifying the setup process. - Enhanced README with quick start instructions and service links for Resend, Upstash, Google Drive API, and Telegram Bot API, improving onboarding experience. * chore: add localtunnel script to package.json and adjust input component styles - Added a new script expose-to-internet in package.json for localtunnel to facilitate external access during development. - Updated the Input component to conditionally adjust width for date type inputs, enhancing responsiveness and usability. * fix: update tagline in various components for consistency * refactor: enhance loading component layout and styling * refactor: improve invoice form validation and template handling - Enhanced the InvoiceForm component to validate data before saving to local storage using Zod. - Updated GeneralInformation component to handle template-specific updates for date format and clear fields based on the selected template. - Adjusted StripeSellerBuyerInfo component styles for better spacing and consistency. - Improved InvoiceBody component to handle invoice total formatting more robustly. - Updated translations for 'billTo' in multiple languages for better accuracy. * footer fix * refactor: standardize date formatting in invoice templates - Introduced STRIPE_DEFAULT_DATE_FORMAT constant for consistent date formatting across invoice-related components. - Updated template tests to utilize the new date format for improved maintainability. - Adjusted GeneralInformation component to set date format based on the selected template, enhancing clarity and consistency. |
||
|
|
d3f2bdc497
|
chore: add tsgo, some dev libs and file structure improvements (#116)
* chore: update package.json and pnpm-lock.yaml for improved diagnostics and new dependencies - Enhanced type-check command in package.json to include diagnostics for better TypeScript error reporting. - Added new command type-check:go for running tsgo with diagnostics. - Updated pnpm-lock.yaml to reflect changes in package versions and ensure consistent dependency management. - Updated README.md to improve project description and support message. - Refactored layout.tsx to include performance monitoring and development tools. - Improved generate-invoice API route for better notification handling and error logging. * move component folder * chore: update package.json and pnpm-lock.yaml to include react-scan for performance monitoring - Added react-scan dependency to package.json for enhanced React component diagnostics. - Updated pnpm-lock.yaml to reflect the new dependency and ensure consistent package management. - Modified layout.tsx to conditionally render ReactScan only in development mode, improving performance in production. * fix: enhance initialization of react-scan component - Added a useRef hook to prevent multiple initializations of the react-scan tool. - Implemented error handling during initialization to log failures gracefully. - Updated useEffect to ensure react-scan is only initialized once, improving performance and reliability. * chore: update Playwright test commands and improve dialog handling in tests - Modified test commands in package.json and GitHub Actions to use the 'list' reporter for better output readability. - Enhanced invoice form tests to interact with the dialog component more effectively, ensuring visibility checks are performed on the dialog rather than the page. - Adjusted layout.tsx to comment out development tools for cleaner production builds. |
||
|
|
d8099a9eb9
|
attempt to fix android pdf preview (#115)
* attempt to fix android * attempt to fix android * attempt to fix android * refactor: enhance PDF preview error handling in PdfViewer component - Improved error handling in the BlobProvider for mobile PDF previews, providing user-friendly messages for loading and generation errors. - Removed unused code and imports to streamline the PdfViewer component. - Ensured consistent loading indicators and error messages for a better user experience. * feat: implement Android PDF viewer and enhance device detection - Added AndroidPdfViewer component to handle PDF previews specifically for Android devices, utilizing BlobProvider for compatibility. - Updated device context to include Android detection, improving user experience on mobile platforms. - Enhanced RootLayout to pass Android detection state to DeviceContextProvider. - Refactored PdfViewer to conditionally render AndroidPdfViewer based on device type, ensuring seamless PDF viewing experience across devices. * fix pdf worker * refactor: improve Android PDF viewer loading and error handling - Updated loading indicators in AndroidPdfViewer for better user experience, ensuring consistent styling and responsiveness. - Simplified error messages for PDF generation failures, enhancing clarity for users. - Refactored loading components in index.tsx to differentiate between desktop and Android viewers, improving modularity and readability. * remove log |
||
|
|
d6a8e5cafb
|
feat: save invoice to google drive and tg notification (#113)
* feat: enhance invoice generation with Telegram notifications and data compression - Integrated Telegram messaging functionality to notify users about generated invoices, including attachments. - Validated and compressed invoice data before generating the invoice URL for improved performance. - Updated email content to include a link to view the invoice online, enhancing user experience. - Added a new Telegram service for sending messages and files, ensuring robust communication. * fix: enhance currency display in invoice form - Updated the invoice form to include full currency names alongside symbols in the currency selection options. - Introduced a new constant, CURRENCY_TO_LABEL, to map currency codes to their respective full names, improving clarity for users. - Adjusted E2E tests to verify the correct display of currency options with full names. * feat: integrate Google Drive functionality for invoice storage and enhance Telegram notifications - Added Google Drive integration to create or find invoice folders and upload generated invoices. - Enhanced the generate-invoice API route to include links to the uploaded invoices in Google Drive within email and Telegram notifications. - Updated notification messages to provide clearer information about invoice details and access links. - Introduced a new Google Drive service for managing folder creation and file uploads, improving invoice management. * refactor: update Google Drive integration for invoice management - Refactored the generate-invoice API route to improve clarity in folder path handling by renaming variables for better understanding. - Enhanced the Google Drive service to streamline folder creation and retrieval, ensuring consistent naming conventions. - Updated the bufferToStream function to utilize Node's Readable.from() for improved efficiency in streaming file uploads. - Removed unnecessary error handling for existing folders, simplifying the logic for folder management. * add zod schema to route.tsx * feat: add email recipient validation to invoice generation API * refactor: integrate environment variables using @t3-oss/env-nextjs - Introduced a new env.ts file to centralize environment variable management with Zod validation. - Updated various components and services to utilize the new env module for accessing environment variables, enhancing code clarity and maintainability. - Removed direct process.env access in favor of the env object, ensuring consistent error handling and validation across the application. * env fix * refactor: update API route - Ensured dynamic rendering is enforced for the invoice generation process. |
||
|
|
6d347fc6cd
|
metadata updates (#110)
* chore: update asset URLs to use STATIC_ASSETS_URL for improved resource management - Updated Open Graph image URLs in layout and About page metadata to utilize STATIC_ASSETS_URL for better asset delivery and cache management. - Ensured consistency in asset references across the application by replacing hardcoded URLs with dynamic constructs. * minor change * fix: update metadata titles for consistency across application - Revised the title in the main layout and About page metadata to include EasyInvoicePDF.com for improved branding and consistency. - Adjusted Open Graph and Twitter card titles to reflect the new format, enhancing SEO and user experience. * fix: update metadata and titles for improved branding consistency - Revised titles and descriptions across multiple languages to include EasyInvoicePDF.com, enhancing brand visibility and consistency. - Updated the E2E test title to reflect the new branding. - Adjusted Open Graph metadata to ensure cohesive representation of the application. * fix title * fix: enhance metadata for improved branding consistency across multiple languages - Updated titles, descriptions, and keywords in various language files to include the site name, enhancing brand visibility. - Adjusted the layout file to utilize the new siteName property for Open Graph metadata, ensuring cohesive representation across the application. * meta upd * fix: update siteName in metadata for improved branding consistency across multiple languages - Revised siteName entries in various language files to remove with Live Preview for a cleaner presentation. - Adjusted the main layout metadata to reflect the updated siteName, ensuring cohesive branding across the application. * fix: update page titles and metadata for improved branding consistency - Revised the title in the About page and Invoice Generator page to reflect the new branding format. - Updated layout metadata to ensure cohesive representation across the application. - Enhanced E2E tests to verify the updated titles for better coverage and consistency. * meta text upd |
||
|
|
87534e4f17
|
chore: update routing and configuration for improved SEO and user exp… (#102)
* chore: update routing and configuration for improved SEO and user experience - Refactored middleware to handle redirection from root to the homepage, enhancing navigation consistency. - Updated Next.js configuration to include a redirects function for better routing management. - Enhanced robots.txt to allow indexing of the root page while disallowing app-related paths. - Improved sitemap generation to reflect the new routing structure. - Removed deprecated patterns from ESLint configuration for cleaner code. - Updated NotFound and Error components to provide user-friendly messages and links to the homepage. - Added loading and error handling components to enhance user experience during data fetching. * chore: update Playwright configuration and E2E tests for improved routing and timeout settings - Reduced Playwright retries from 2 to 1 for CI environments to streamline test execution. - Increased timeout for expect assertions from 25 seconds to 30 seconds to enhance reliability. - Updated E2E tests to reflect new routing structure, changing expected URLs from /en/app to / for better consistency across tests. - Modified video source URLs in tests to point to the new CDN for improved asset management. * chore: update README and enhance PDF download link notifications - Added new features section to README.md, highlighting live preview, shareable links, instant download, multi-language support, and European VAT calculation. - Updated toast notification title and description in the PDF download link component to reflect user-friendly messaging about supporting the project. * chore: update i18n schema and enhance E2E tests for routing validation - Renamed i18n messages schema file for clarity and consistency. - Added a new test to validate redirection from /:locale/app to / for improved routing accuracy. - Enhanced Not Found page tests to verify correct URL handling for non-existent pages across multiple locales. - Updated package.json to include a test script for Playwright, streamlining test execution. * style upd * chore: simplify middleware configuration for i18n routing - Updated middleware to match only "/:locale/about" paths for internationalization. - Removed unnecessary comments and streamlined the matcher configuration for clarity. * chore: update ESLint configuration and add project description - Removed deprecated patterns from ESLint configuration for cleaner code. - Added a new file with a detailed description of the EasyInvoicePDF project, highlighting its features and main pages. - Simplified the NotFound and Error components by removing unnecessary comments and imports. * fix: implement smooth scrolling behavior on mount in AppPageClient - Restored the smooth scrolling effect to the top of the App page on component mount for improved user experience during navigation. |
||
|
|
8ba995d276
|
chore: refactor middleware for root redirection and update configuration (#100)
* chore: refactor middleware for root redirection and update configuration - Removed the redirects function from next.config.mjs and implemented custom middleware to handle redirection from the root path to /en/app. - Updated robots.txt to disallow root indexing due to redirection. - Enhanced sitemap generation by removing the root URL entry. - Added JSON-LD schema for FAQ section in the About page to improve SEO. - Updated package.json to include schema-dts for structured data handling. * fix: update URL construction in AppPageClient to use window.location.origin for better compatibility * fix: update About page content and JSON-LD schema for improved clarity and SEO - Revised the description in the About page to enhance clarity regarding the tool's functionality. - Updated the JSON-LD schema to include detailed information about the About page and its features, improving SEO and structured data representation. - Adjusted the layout and styling of the About page for better responsiveness and user experience. * fix: enhance scrolling behavior in About and App pages - Updated the GoToAppButton component to disable default scrolling behavior on link click, ensuring consistent navigation experience. - Implemented smooth scrolling to the top of the App page on mount, improving user experience during page transitions. * fix: enhance JSON-LD schema in layout for improved SEO and clarity * remove unused code * fix: update middleware redirection status code from 301 to 308 for method preservation * fix: update styling and accessibility in About page HeroSection - Replaced checkmark icon with an emoji for improved accessibility. - Updated gradient background for the browser chrome bar to enhance visual appeal. - Adjusted color codes for the status indicators to maintain consistency and improve aesthetics. |
||
|
|
549fed296c |
chore: update package manager and Playwright timeout settings; enhance Sentry configuration for better environment checks
- Updated package manager version from pnpm@10.6.5 to pnpm@10.9.0 in package.json. - Increased Playwright expect assertion timeout from 15 seconds to 25 seconds for improved test reliability. - Refactored Sentry configuration in client, edge, and server files to utilize environment checks for enabling Sentry and DSN management, ensuring better performance and clarity in production environments. |
||
|
|
f86dabee91
|
feat: i18n /about page, new translations and currencies and other improvements (#84)
* i18n init * chore: update README and refactor localization messages - Updated the analytics link in README.md to point to the new Umami dashboard. - Refactored localization messages in en.d.json.ts to use consistent JSON formatting. - Introduced a new config.ts file to manage application URL and port settings. - Updated layout components to utilize APP_URL for metadata base URL. - Added support for additional languages in the language switcher component. * chore: update README and refactor localization messages - Updated the analytics link in README.md to point to the new Umami dashboard. - Refactored localization messages in en.d.json.ts to use consistent JSON formatting. - Introduced a new config.ts file to manage application URL and port settings. - Updated layout components to utilize APP_URL for metadata base URL. - Added support for additional languages in the language switcher component. * chore: change redirect to permanent: false in next.config.mjs * feat: localize not-found page * fix: languages * refactor: update language handling and improve invoice form components - Renamed MAP_LOCALE_TO_LABEL to MAP_LOCALE_TO_LANGUAGE for clarity in language switcher. - Enhanced language selection logic in GeneralInformation component to handle unsupported languages gracefully. - Adjusted invoice PDF download link styling for Portuguese language support. - Updated translations to include additional languages (German, Spanish, Portuguese, Russian, Ukrainian) with proper formatting for invoice items table. * chore: update .gitignore and .prettierignore for i18n files - Added messages/en.d.json.ts to .gitignore to exclude localization files from version control. - Created .prettierignore to prevent formatting of messages/en.d.json.ts for consistent localization handling. - Updated INITIAL_INVOICE_DATA to set typeOfGTUFieldIsVisible to false for improved invoice form logic. * fix * chore: update Playwright configuration and improve invoice form tests - Changed Playwright trace option from on-first-retry to retain-on-failure for better debugging. - Updated invoice form test to ensure the PDF visibility toggle is unchecked by default. - Removed redundant tooltip handling logic in seller test for cleaner code. - Added new hero and project logos as SVG components for better asset management. - Implemented smooth scrolling in global CSS for improved user experience. * feat: enhance localization for About page and add new features - Added comprehensive localization support for the About page in multiple languages (German, Spanish, Portuguese, Russian, Ukrainian). - Introduced new features in the About section, including live preview, shareable links, instant download, multi-language support, VAT support, and open-source information. - Updated the UI components to utilize localized strings for titles, descriptions, and buttons, improving user experience and accessibility. - Refactored the About page to streamline the rendering of features and call-to-action sections with dynamic translations. * feat: implement translation validation and enhance localization structure - Added translation validation logic in next.config.mjs to ensure integrity of localization files. - Introduced new schemas for i18n messages and translations using Zod for better type safety and validation. - Updated invoice PDF template components to utilize the new TRANSLATIONS structure for improved localization handling. - Enhanced Russian localization for the About page, updating titles and descriptions for consistency. - Added jiti as a dependency for dynamic module loading in the validation process. * refactor: enhance button components and improve layout responsiveness - Refactored button components in the About and App pages to utilize the prop for better integration with links. - Updated layout classes for responsive design, ensuring proper alignment and spacing across different screen sizes. - Adjusted the height of the language selector for improved usability. - Optimized image attributes for better performance and accessibility. * fix: e2e test * minor fixes * feat: add error handling component and enhance localization for error messages - Introduced a new Error component for handling errors in the application, featuring user-friendly messages and Sentry integration for error tracking. - Added comprehensive localization support for error messages in multiple languages (German, Spanish, Portuguese, Russian, Ukrainian), ensuring consistent user experience across different locales. - Updated schemas for i18n messages to include error handling structure, improving type safety and validation. - Refactored invoice form components to utilize new currency symbols and language labels for better clarity and usability. * feat: enhance localization support and add new languages - Updated English localization to include ten supported languages for invoice creation, improving clarity and user experience. - Added French, Italian, and Dutch localization files, ensuring comprehensive language support across the application. - Enhanced the language switcher component to accommodate new languages, improving accessibility and usability for users. - Updated schema and translation files to reflect the new languages, ensuring type safety and validation consistency. * feat: enhance localization and error handling for About page - Updated localization files to include a new switchLanguage button text in multiple languages, improving user experience for language switching. - Enhanced error handling by introducing a new Error component for better user feedback and Sentry integration. - Improved metadata generation in the About page layout to handle errors gracefully, ensuring robust localization support. - Refactored the LanguageSwitcher component to utilize localized button text, enhancing accessibility and usability. * refactor: improve layout and localization handling in About and App pages - Adjusted layout structure in the About page header for better responsiveness and alignment. - Updated the LanguageSwitcher component to remove unnecessary locale display, enhancing clarity. - Modified the Home component to pass locale as a prop to ProjectInfo, ensuring consistent localization support. - Enhanced the Logo component's styling for improved visual consistency across different screen sizes. * feat: enhance localization and add meta tags for About page - Updated localization files to include a new tagline in multiple languages, improving user experience and consistency. - Modified the About page to display the tagline dynamically, enhancing the overall layout and responsiveness. - Added a new script in package.json for checking site metadata, improving development workflow. - Introduced a new dependency for handling email sending, expanding functionality for future features. * feat: implement newsletter subscription feature with localization support - Added a new subscription action to handle user email subscriptions, including rate limiting and error handling. - Created a confirmation page for verifying subscription tokens, enhancing user experience and security. - Introduced a new SubscribeInput component for user input, featuring success and error messages. - Updated localization files to include newsletter-related texts in multiple languages, improving accessibility. - Enhanced the About and App pages to include newsletter subscription sections, promoting user engagement. * feat: enhance localization for newsletter subscription messages - Added email language information to localization files in multiple languages, improving user clarity regarding email communication. - Updated SubscribeInput and related components to display the new email language info, enhancing user experience. - Modified i18n schema to include email language information, ensuring type safety and validation consistency. * feat: add robots and sitemap generation for SEO optimization - Introduced robots.ts and sitemap.ts files to manage SEO directives and sitemap generation, enhancing search engine indexing. - Configured robots.txt rules to allow indexing of specific routes while disallowing app-related paths, improving site visibility. - Implemented dynamic sitemap generation based on supported languages, ensuring up-to-date indexing information for search engines. * feat: enhance subscription token verification with rate limiting and error handling - Implemented IP-based rate limiting for subscription token verification attempts, allowing a maximum of 5 attempts per hour per IP. - Updated the verifySubscriptionToken function to include error messages for invalid token formats and rate limit exceedance. - Enhanced the ConfirmSubscriptionPage to display specific error messages based on verification results, improving user feedback. * fix: update email development script directory in package.json - Modified the dev:email script to specify the directory for email templates, ensuring correct path usage during development. * feat: enhance locale validation and static rendering in NotFound and layout components - Implemented locale validation in NotFound and layout components to ensure only supported locales are processed, defaulting to 'en' for invalid locales. - Updated setRequestLocale calls to enable static rendering, preventing dynamic server errors as per Next.js guidelines. - Improved comments for clarity on locale handling and static rendering implications. * feat: enhance invoice form tests and localization messages * fix: update invoice form test selectors and localization messages - Changed the role selectors for the Amount and Net Price fields in invoice form tests to include more descriptive names: Amount (Quantity) and Net Price (Rate or Unit Price). - Updated localization messages in Portuguese to reflect the correct terminology for VAT support, enhancing clarity for users. - Adjusted test cases to ensure they align with the updated field names, improving test accuracy and maintainability. * feat: refactor NotFound component and introduce locale-specific handling - Converted the NotFound component to support locale-specific rendering by creating a new locale-based NotFound component. - Implemented locale validation to ensure only supported locales are processed, enhancing user experience. - Updated comments for clarity on static rendering implications and locale handling. - Added a catch-all page to handle undefined routes, improving navigation consistency. * feat: add end-to-end tests for About page and Not Found page - Introduced comprehensive Playwright tests for the About page, covering content visibility in English, French, and German, as well as language switching functionality. - Implemented tests for the Not Found page to ensure proper error handling and navigation across multiple locales. - Enhanced the About page components with data-testid attributes for improved testability. - Updated the Not Found component comment for clarity on client-side rendering requirements. * refactor: move Not Found page tests to a dedicated file - Extracted Not Found page tests from the About page test file into a new dedicated test file for improved organization and maintainability. - Retained existing test cases for various locales, ensuring comprehensive coverage of error handling and navigation. - Updated the test structure to enhance clarity and separation of concerns in the test suite. * feat: enhance About page tests and localization for newsletter subscription - Added tests for the newsletter subscription form visibility and functionality in English and French, ensuring comprehensive coverage of user interactions. - Updated footer links in tests to verify correct attributes and visibility for social media and feedback links. - Enhanced localization files to include new button labels and feedback options across multiple languages, improving user experience and consistency. - Refactored the SubscribeSection component to include an ID for easier test targeting and improved accessibility. * fix(ci): update Playwright report path in e2e workflow * feat: enhance invoice form with dynamic invoice number handling and localization - Introduced InvoiceNumberHelperMessage component to provide user guidance on invoice number format and switching to default. - Updated invoice number initialization in INITIAL_INVOICE_DATA to include localized labels. - Enhanced language selection to automatically update the invoice number format based on the selected language. - Improved invoice number validation in the schema to enforce character limits, ensuring better user input handling. * chore: update .gitignore and refactor PDF test download handling - Added 'playwright-test-downloads/' to .gitignore to prevent tracking of test downloads. - Refactored PDF test download logic to improve directory handling and ensure recursive creation of download directories. - Updated filename generation in InvoicePDFDownloadLink component to extract invoice number correctly for better file naming consistency. * refactor: move default buyer and seller data to constants - Refactored DEFAULT_BUYER_DATA and DEFAULT_SELLER_DATA from schema to constants for better organization and maintainability. - Updated relevant test files and components to import default data from the new constants location. - Improved clarity and separation of concerns in the codebase. * fix: improve invoice number handling in general information section - Updated invoice number splitting logic to correctly handle spacing after the colon for better parsing. - Enhanced language change functionality to retain the invoice number suffix, improving user experience during language switching. * fix: update invoice number suffix handling in general information section - Modified invoice number suffix assignment to default to the current month and year if not provided, ensuring consistent formatting. - Adjusted end-to-end test to reflect the updated invoice number format * feat: integrate video demo functionality and update UI components - Added Video component to handle video playback with intersection observer for performance optimization. - Implemented video demo dialog in the Home and About pages to enhance user experience with a visual guide on invoice creation. - Updated the About page to replace static image with video, improving engagement and interactivity. - Introduced new easy-invoice-demo.mp4 and easy-invoice-hero.webp assets for the demo functionality. - Refactored ProjectInfo component to include a button for accessing the demo video, enhancing user guidance. * fix: update video component and tests for better playback handling - Removed unnecessary condition from the e2e workflow for uploading Playwright reports. - Enhanced the About page test to check for video attributes, ensuring proper visibility and functionality. - Updated the Video component to include a testId prop for improved test targeting and added error handling for video playback. - Implemented cleanup logic in the Video component to handle playback errors gracefully during component unmounting. * fix: enhance About page tests for language navigation * fix: increase timeout for Playwright expect assertions to improve test reliability * fix: increase Playwright retries and e2e workflow timeout for improved test stability * feat: add loading skeleton component and About page loading state - Introduced a new Skeleton component for loading placeholders. - Implemented AboutLoading component to display loading state for the About page, enhancing user experience during data fetching. - Structured the layout with responsive design using Tailwind CSS, ensuring a consistent look across devices. * fix: update metadata titles and descriptions for localization - Modified titles in the metadata section for various languages to include About for clarity. - Updated VAT support descriptions to specify European VAT for better accuracy across multiple languages. - Removed redundant meta objects from the About section in localization files to streamline the structure. * feat: refactor invoice number handling to support object structure - Updated invoice number management to use an object with label and value, enhancing clarity and flexibility. - Modified relevant components and tests to accommodate the new structure, ensuring consistent data handling across the application. - Implemented breaking change handling for legacy invoice number format, improving backward compatibility. - Enhanced form validation and error messaging for the new invoice number fields. * feat: enhance routing and SEO configurations - Updated ESLint configuration to restrict imports from @react-pdf/renderer to the browser-specific version for better compatibility. - Modified Next.js routing to redirect root to /en/app, ensuring a permanent redirect for improved SEO. - Enhanced robots.txt to allow indexing of the root and about pages while disallowing app routes and subscription confirmation pages. - Refactored sitemap generation to include the new app route and ensure proper indexing of allowed pages. - Updated metadata in layout and confirm subscription pages to manage indexing behavior effectively * feat: update ESLint rules and refactor navigation imports - Enhanced ESLint configuration to restrict imports from and , directing to for improved routing consistency. - Updated various components to use the new navigation imports and adjusted link paths to for better user experience. - Ensured proper error handling and user-friendly messages in the NotFound and Error components. * fix: improve styles * feat: add GitHub Actions workflow for E2E test failure notifications - Introduced a new workflow to notify via GitHub issue when Playwright E2E tests fail. - The workflow triggers on completion of the E2E tests and creates an issue with relevant details, enhancing visibility on test failures. * chore: remove GitHub Actions workflow for E2E test failure notifications * chore: update E2E workflow to send email notifications and adjust URL in tests - Added email notification step to the E2E workflow, sending results of Playwright tests to a specified email. - Updated the expected URL in the not-found-page test from /en/app to /pl/app for localization consistency. * chore: enhance E2E workflow to calculate and report test duration - Added duration calculation for Playwright tests in the E2E workflow, outputting the formatted duration to GitHub Actions. - Updated email notification to include the duration of the test run for better insights. * ci improve * ci improve * ci improve * chore: refactor project structure and add utility types - Removed unused image file . - Introduced new TypeScript utility types in for better type handling. - Updated import paths in and to use the new directory structure. - Added common error handling components in . - Refactored invoice-related utility functions into . - Implemented rate limiting functionality in and Redis connection in . - Cleaned up unused utility functions in . * feat: add FAQ section to About page and update translations - Implemented a new FAQ section in the About page, enhancing user experience by providing answers to common questions. - Added corresponding translations for the FAQ section in multiple languages (de, en, es, fr, it, nl, pl, pt, ru, uk). - Updated E2E tests to verify visibility of the FAQ section and its links. * feat: integrate react-aria-components for enhanced disclosure functionality - Added to the project dependencies for improved accessibility and UI interactions. - Implemented a new component in the About page, replacing the previous accordion structure with a more accessible disclosure pattern. - Updated FAQ section to utilize the new disclosure components, enhancing user experience and maintainability. - Adjusted styles for better responsiveness and visual consistency. * feat: enhance error handling for shared invoice URL - Added user-friendly error notification when the shared invoice URL is incorrect. - Implemented a toast message with a clear button to redirect users back to the homepage, improving user experience and error management. * feat: update translations for multi-language support and customization options |
||
|
|
8ba571bdcb
|
chore: remove @openpanel/nextjs dependency and update Sentry configuration for production environment (#85)
- Removed the @openpanel/nextjs dependency from package.json to streamline the codebase. - Updated Sentry configuration in client, edge, and server files to use NODE_ENV instead of VERCEL_ENV for production checks. - Refactored error handling in invoice form tests to improve clarity and maintainability. - Enhanced error toast messages for better user guidance during PDF generation failures. |
||
|
|
e6f54d5dfc
|
feat: add e2e tests with playwright and other improvements (#79)
* feat: Add language attribute to date input fields in invoice form components - Include `lang="en"` attribute in date input fields of `InvoiceForm` and `GeneralInformation` components for improved accessibility and localization support. * fix: Update language attribute for date input fields in invoice form components * refactor: Improve layout and organization of invoice components - Remove unnecessary margin from the main container in the Home component. - Wrap the share invoice button and PDF download link in a fragment for better structure. - Adjust margins for the ProjectInfo and action button container for improved spacing. - Update the InvoicePDFViewer height to use full height for better responsiveness. - Remove the deprecated RegenerateInvoiceButton component to streamline the codebase. - Update the InvoiceClientPage to accept handleShareInvoice prop for better functionality. - Clean up unused language attributes in date input fields across invoice form components. * feat: Integrate Playwright for end-to-end testing and enhance invoice form components - Add Playwright configuration and dependencies for E2E testing. - Create GitHub Actions workflow for automated E2E tests on deployment. - Implement initial E2E tests for the Invoice Generator Page, verifying UI elements and form functionality. - Refactor invoice form components to include data-testid attributes for better testability. - Update .gitignore to exclude Playwright-related files and directories. * chore: Update GitHub Actions workflow for E2E testing and enhance test coverage - Upgrade pnpm version from 8 to 10 in the E2E workflow for improved package management. - Add new test case to verify header buttons and links on the Invoice Generator Page, ensuring UI elements are displayed correctly and have the expected attributes. * chore: Enhance ESLint configuration for Playwright integration - Add Playwright ESLint plugin to package.json for improved E2E testing support. - Update .eslintrc.json to include overrides for E2E test files. - Clean up GitHub Actions workflow by removing unnecessary pnpm version specification. * chore: Update Playwright configuration and improve test assertions - Increase timeout for expect assertions and test execution from 15 seconds to 30 seconds for better stability in E2E tests. - Comment out mobile viewport tests to streamline configuration and focus on desktop testing. * chore: Update configuration and refactor invoice form components - Add compiler options to remove console logs in production and enhance logging for fetch requests in next.config.mjs. - Update package.json to include new type definitions for ua-parser-js and add ua-parser-js as a dependency. - Refactor invoice form components to remove form prefix IDs, simplifying data-testid attributes for better testability. - Introduce DeviceContext for managing device type state and improve responsiveness in invoice form components. - Implement server-side device detection using user agent parsing for better rendering on mobile and desktop views. - Update media query hooks to streamline device type checks across components. * chore: Update Playwright configuration and enhance invoice form tests - Reduce timeout for expect assertions from 30 seconds to 15 seconds for improved test performance. - Add new test for handling currency switching in the Invoice Generator Page, verifying correct currency display and calculations. - Refactor buyer and seller information components to include tooltip messages and improve accessibility with aria attributes. - Update BuyerDialog and BuyerManagement components to enhance user experience with better visibility and edit functionality for buyer details. * chore: Update Playwright installation command in GitHub Actions workflow - Modify Playwright installation command to remove explicit browser specification, allowing for default browser installation with dependencies. * chore: Update GitHub Actions E2E workflow for Playwright report handling - Change condition for uploading Playwright report to ensure it uploads regardless of test outcome. - Reduce retention days for uploaded reports from 5 to 3 for better resource management. * chore: Update Playwright installation command in GitHub Actions workflow - Specify installation of Chromium and WebKit browsers along with dependencies for enhanced testing capabilities. * chore: Enhance E2E tests for seller and buyer management functionality - Add tests to verify the deletion process for sellers and buyers, including confirmation dialogs and success messages. - Ensure localStorage data is correctly saved and parsed for both seller and buyer information. - Introduce default data constants for sellers and buyers to streamline test setup. - Improve accessibility by adding screen reader text for delete buttons in the seller management component. * chore: Pin versions of GitHub Actions in E2E workflow for stability - Update actions/checkout, pnpm/action-setup, actions/setup-node, and actions/upload-artifact to specific versions for improved reliability and security. - Comment added to clarify the rationale for using pinned versions. * chore: Add E2E test for accordion items visibility and localStorage state management - Implement test to verify that accordion items are visible, collapsible, and their state is correctly saved in localStorage. - Ensure state persistence across page reloads and validate updated states after toggling sections. - Introduce ACCORDION_STATE_LOCAL_STORAGE_KEY and AccordionState type for better type safety and clarity. * chore: Update Playwright configuration and add comprehensive E2E tests for seller and buyer management - Increase timeout for expect assertions and test execution from 30 seconds to 60 seconds for improved stability in E2E tests. - Introduce new E2E tests for seller and buyer management, covering creation, editing, and deletion processes, including confirmation dialogs and success messages. - Ensure localStorage data is correctly saved and parsed for both seller and buyer information. - Implement detailed validation for form fields and visibility toggles in seller and buyer management dialogs. - Enhance accessibility by adding screen reader text for buttons and tooltips in the management components. * chore: Refactor Playwright configuration and enhance invoice item validation tests - Introduce a constant for timeout values in Playwright configuration for consistency and maintainability. - Add comprehensive validation tests for amount, net price, and VAT fields in the invoice items section, ensuring proper error messages for invalid inputs. - Update expected error messages in the schema to match the new formatting for better clarity. - Improve test structure by utilizing descriptive variable names and modularizing input handling for better readability. * chore: add pdf e2e tests - Add `pdf-parse` and its type definitions to package.json for PDF handling capabilities. - Increase Playwright timeout from 30 seconds to 60 seconds for improved test stability. - Introduce comprehensive E2E tests for PDF generation, verifying content in both English and Polish. - Implement cleanup procedures for test downloads to ensure a clean testing environment. - Validate invoice data updates in the generated PDF, ensuring accurate content reflects user inputs. * chore: add eslint, knip, lint-staged * chore: run prettier * chore: minor improvements * chore: add more test and improved e2e config * minor fixes * minor fixes * chore: add new test |
||
|
|
1b3aa79553
|
feat: Add multi-language PDF download feature with multi-select component and create/edite/delete buyer (#73)
* feat: Add multi-language PDF download feature with advanced UI components - Implement `InvoicePDFDownloadMultipleLanguages` component for downloading PDFs in multiple languages - Create new UI components: `MultiSelect`, `Badge`, `Command`, `Popover`, and `Separator` - Add language selection dropdown with advanced interaction and download capabilities - Integrate custom tooltip and button styling for enhanced user experience - Implement ZIP archive generation for multiple language PDFs - Add PRO feature placeholder with commented-out code for future release * feat: Implement Buyer Management with Local Storage and Form Validation - Add `BuyerManagement` component for creating, editing, and deleting buyers - Implement `BuyerDialog` for comprehensive buyer data management - Integrate Zod schema validation for buyer data - Add local storage persistence for buyer information - Include error handling, analytics tracking, and Sentry error logging - Replace placeholder "New Buyer" button with fully functional management system - Update invoice form to support dynamic buyer selection and management * chore: Add Node.js and pnpm version constraints to package.json - Specify minimum Node.js version as 20.0.0 - Set pnpm package manager version to 10.5.0 - Add `engines` field to enforce development environment compatibility * chore: Remove pnpm version constraint from package.json - Remove explicit pnpm version requirement - Maintain Node.js version constraint - Simplify package manager configuration * chore: Upgrade @react-pdf dependencies to latest versions - Update @react-pdf/renderer from 4.2.4 to 4.3.0 - Remove @react-pdf/layout dependency * style: Enhance MoneyInput component styling with subtle shadow and improved text color |
||
|
|
6eb6c3aaba
|
feat: add more sentry captures (#70)
* feat: add more sentry captures - Add Sentry exception capturing in error handling for multiple components - Remove redundant logging statements - Update error handling in various files with Sentry error tracking - Improve error logging and tracking consistency - add axiom to middleware * chore: remove next-axiom logging and related dependencies * chore: Update dependencies and add Vercel Speed Insights * remove log.error * feat: Enhance invoice form with mobile-friendly layout and unique form field identifiers - Add new `InvoiceClientPage` component to manage mobile and desktop invoice form layouts - Implement dynamic form field identifiers for mobile and desktop views - Improve accessibility by generating unique IDs for form inputs - Refactor invoice form to support multiple view modes - Add project logo and branding to the main page - Update component structure to support responsive design * chore: minor tweaks * minor tweak * fix: Correct SVG attribute naming in project logo component * fix: Improve invoice PDF document title |
||
|
|
f135814eaf
|
feat: Integrate Sentry for comprehensive error monitoring and tracking (#66)
- Add Sentry configuration for client, server, and edge runtime environments - Configure error tracking with sampling rates and performance monitoring - Implement global error handling with Sentry exception capturing - Add instrumentation for Next.js runtime error tracking - Update Next.js configuration to support Sentry integration - Add Sentry-related dependencies to package.json |
||
|
|
b4bbf3370a
|
feat: Add Axiom logging and enhance error tracking across application + update invoice form styles (#65)
* feat: Add Axiom logging and enhance error tracking across application + update invoice form styles - Integrate next-axiom for comprehensive logging and web vitals tracking - Add logging for various error scenarios in invoice generation, form interactions, and PDF downloads - Implement error logging in seller management, invoice form, and error page - Create a reusable ErrorGeneratingPdfToast component - Add web vitals tracking with AxiomWebVitals component - Enhance analytics and error tracking with detailed log messages * feat: Enhance error logging |
||
|
|
1dac29c124
|
feat: Add mobile-friendly tabs for invoice form and PDF preview (#64)
* feat: Add mobile-friendly tabs for invoice form and PDF preview - Implement Radix UI Tabs component for responsive invoice page layout - Add dynamic tabs for mobile view with "Edit Invoice" and "Preview PDF" options - Conditionally render form and PDF viewer based on selected tab - Include icons for tab triggers to improve visual clarity - Maintain existing desktop side-by-side layout for larger screens - Add new Tabs UI component with custom styling * feat: Enhance invoice form with accordion state persistence and UI refinements - Add localStorage-based accordion state management for invoice form sections - Implement accordion state schema with Zod for validation - Refactor ProjectInfo component in main page - Improve button and layout styling with responsive margins - Add fallback for accordion state initialization - Optimize UI components with consistent spacing and helper messages |
||
|
|
ac5a6f4510
|
feat: add Radix UI Accordion to invoice form for improved section organization (#56) | ||
|
|
47357962c7
|
chore: add open panel for analytics (#54)
* chore: add open panel for analytics * refactor: replace loglib with OpenPanel for analytics tracking * docs: add support link to README |
||
|
|
bed431f553
|
feat: save sellers for future use, enhance invoice form with advanced input validation and user experience improvements (#47)
* feat: add seller management with local storage and dialog components - Introduced new components for managing sellers: SellerManagement and SellerDialog - Implemented local storage hook (useLocalStorageEntities) for persistent seller data - Added ability to add, edit, and delete sellers with form validation - Created new Radix UI dialog and alert dialog components - Updated invoice form schema to support seller management - Enhanced invoice form with seller selection and management functionality * feat: enhance invoice form with advanced input validation and user experience improvements - Added rich color toasts for form validation errors - Improved input validation with max length and range constraints - Enhanced input preview and helper messages for amounts and prices - Implemented amount-in-words preview for net prices - Updated PDF template formatting for better readability - Refactored media query hook and utility functions - Added more descriptive error messages and input guidance * feat: extract default seller data and improve seller selection UX - Created DEFAULT_SELLER_DATA constant in schema for reusable default seller configuration - Updated seller management component to use default seller data - Enhanced seller selection dropdown with improved styling and placeholder text - Simplified seller reset logic across components |
||
|
|
60cdb7d344
|
feat: Show/hide columns on pdf, add og image, tooltips + other improvements (#36)
* feat: enhance invoice form with new UI components and visibility controls - Added Radix UI Switch and Tooltip components for improved interactivity - Introduced field visibility toggles for invoice items - Added input helper messages for better user guidance - Updated schema to support new field visibility options - Refined styling and responsiveness of form elements - Improved tooltips and helper text across the invoice form * feat: add comprehensive invoice field visibility controls and date formatting options - Introduced granular field visibility switches for invoice items and sections - Added support for multiple date format options - Enhanced invoice form with dynamic field visibility toggles - Updated PDF template to conditionally render fields based on visibility settings - Improved date handling and formatting across invoice generation - Added validation and helper messages for date-related fields - Expanded schema to support more flexible invoice configuration * refactor: update invoice PDF template column styles - Replaced commented-out column width styles with flex-based layout - Adjusted column width proportions for better table readability - Simplified column width definition using flex properties * chore: upd deps + minor fixes * fix: improve net price validation error message * refactor: improve invoice form field rendering and localization - Reordered error and helper message rendering for better UX - Added currency context to labels for clarity - Updated input step and type attributes for improved validation - Localized numeric inputs with toLocaleString for consistent formatting - Made unit field optional in invoice item schema * refactor: improve invoice PDF download and regeneration UX - Replaced PDFDownloadLink with usePDF hook for better loading state management - Added loading states and animations for PDF download and regeneration buttons - Created a new RegenerateInvoiceButton component with improved error handling - Simplified dynamic imports and component structure - Enhanced user feedback during PDF generation process * refactor: optimize imports and remove unused components in invoice page * refactor: extract loading timeout constant for consistent UX |
||
|
|
a342935e78
|
feat: update dependencies and enhance invoice form functionality (#14)
* feat: update dependencies and enhance invoice form functionality - Added new dependencies: @radix-ui/react-label, @radix-ui/react-slot, class-variance-authority, clsx, sonner, tailwind-merge, and tailwindcss-animate. - Updated package.json and pnpm-lock.yaml to reflect new versions. - Enhanced the invoice form with improved error handling and UI components. - Integrated a toast notification system for better user feedback. - Updated the PDF download link to include invoice language in the filename. - Improved layout and styling in the invoice form and PDF template components. - Refactored state management for invoice data to streamline data loading from URL and local storage. * feat: add Prettier configuration and update project files - Introduced a Prettier configuration file (.prettierrc.js) for consistent code formatting. - Updated package.json to include Prettier and its Tailwind CSS plugin as dependencies. - Made minor formatting adjustments across various components and configuration files for improved readability and consistency. - Enhanced the loading and invoice form components with better styling and layout adjustments. - Ensured all JSON files and configuration files have proper formatting and structure. * feat: enhance invoice sharing and download experience - Updated toast notification to include rich text formatting for better user guidance on sharing invoices. - Increased toast duration for improved visibility. - Refactored layout of the invoice regeneration and download button for better mobile responsiveness. - Added conditional rendering for the PDF download link based on mobile view. - Improved styling consistency across components. * feat: implement responsive PDF download link and add media query hook - Introduced a custom hook `useMediaQuery` to manage responsive behavior. - Updated the `InvoicePDFDownloadLink` component to remove mobile-specific prop and enhance styling. - Modified the main page to conditionally render the PDF download link based on desktop view. - Enabled server-side rendering for the PDF download link for improved performance. * feat: enhance invoice PDF layout and translations - Added a new center style to align content in the invoice items table. - Updated the invoice items table to apply the center style for better visual alignment of headers. - Modified translations for 'netAmount' and 'netPrice' to include line breaks for improved readability in the PDF output. * fix: update link in footer to point to new personal website * feat: add contact link to footer for user engagement |
||
|
|
141df9fd4b | feat: change analytics lib + minor fixes | ||
|
|
c6418457ac | chore: add metadata + minor fixes | ||
|
|
04437e829e | wip | ||
|
|
db3c637fb0 | Initial commit from Create Next App |