21 Commits

Author SHA1 Message Date
Raphael S. d6f2c90a26 fix: switch quote OG image route to edge runtime for reliable Twitter cards
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 14:34:09 +00:00
Raphael Salaja a76984b0ba chore: address jace feedback (#20)
chore: address feedback
2026-01-28 14:05:24 +00:00
Raphael S. f7f7e77799 feat: add quote generation and share feedback 2026-01-28 12:16:40 +00:00
Raphael S. 9b2c3c814c feat(og): add dynamic image generation for pages 2026-01-19 09:57:04 -08:00
Raphael S. 7ae70a4ac6 feat(tts): implement text-to-speech generation and API integration 2026-01-11 00:46:59 +00:00
Raphael S. 15ff683381 feat(tts): enhance tts processing with paragraph analysis and caching 2026-01-08 08:08:13 +00:00
Raphael S. 7d7188065d chore: simplify lib folder 2026-01-03 21:32:41 +00:00
Raphael S. a41a6a599b refactor(tts): simplify TTS implementation by removing voice selection
- Removed voice parameter from TTS API calls to streamline the process.
- Consolidated voice handling to a single environment variable for cost efficiency.
- Updated related components and types to reflect the removal of voice selection.
2026-01-03 20:48:20 +00:00
Raphael S. e6124136ae feat(progress-bar): add a progress bar demo component
- Implement a progress bar that simulates a download process.
- Includes start and reset functionality with visual feedback.
- Styles are defined in a separate CSS module for better organization.

feat(sidebar-demo): create a sidebar demo with animations

- Introduce a sidebar that can be toggled open and closed.
- Uses motion for smooth transitions and animations.
- Menu items are displayed with icons and labels.

feat(swipe-to-dismiss): implement swipe-to-dismiss notifications

- Create a notification system where users can swipe to dismiss.
- Notifications include icons and text, with animations on drag.
- Supports resetting notifications to the initial state.

feat(tab-switcher): add a tab switcher component

- Implement a tab switcher with smooth transitions between tabs.
- Each tab displays an icon and label, with an animated indicator.
- Uses motion for enhanced user experience.

feat(toast-demo): create a toast notification demo

- Implement toast notifications that appear on user action.
- Toasts include icons, titles, and can be dismissed.
- Styles are defined in a separate CSS module for clarity.

feat(tts): add edge TTS functionality for speech synthesis

- Implement speech synthesis using edge TTS with chunking support.
- Handles text splitting, audio generation, and subtitle parsing.
- Includes error handling and retry logic for robustness.
2026-01-03 17:02:15 +00:00
Raphael S. 1b4b4fc37a feat(types): add IconProps interface for SVG icons
Introduce a new interface, IconProps, to standardize the properties
for SVG icon components. This interface includes optional size and
color properties, enhancing the flexibility and usability of icon
components across the application.
2025-12-24 12:30:09 +00:00
Raphael S. 5f0f0356be refactor(fonts): replace fetch with readFileSync for font loading 2025-12-17 21:32:19 +00:00
Raphael S. 58dbac9058 feat(opengraph): implement dynamic Open Graph and Twitter image generation
- Added dynamic image generation for Open Graph and Twitter cards.
- Removed unused image files and updated metadata generation to include image URLs.
- Enhanced the apple and icon components with dynamic settings.
2025-12-17 21:20:50 +00:00
Raphael S. e1f7c56df0 feat(icons): add new icons for note, openai, and various principles
- Introduced new icons including NoteIcon and OpenAIIcon for enhanced visual representation.
- Added icons for the Squash and Stretch principles: ArrowIcon, CrownIcon, FireIcon, and ToastIcon.
- Implemented anticipation icons: HighPriority, InProgress, Done, Todo, Check, Bolt, and Avatar.
- Created corresponding styles and components for the new icons to ensure consistent design and functionality.
2025-12-14 00:06:07 +00:00
Raphael S. b61d3338f4 chore: huge cleanup 2025-12-13 15:53:33 +00:00
Raphael S. b7bd1e1fa7 feat(authors): add author data and schema validation
- Introduced author data files for multiple authors including Anton Stallbörger, Jace Attard, Raphael Salaja, and Russell Dare.
- Implemented a schema for author validation using Zod to ensure data integrity.
- Added functions to read and validate author data from JSON files.

feat(content): implement page formatting utilities

- Created utilities for formatting page data, including author resolution and published date formatting.
- Added functions to format a full Page object and an array of Page objects for consistent display.

feat(tts): add text-to-speech functionality

- Developed ElevenLabs integration for synthesizing speech with timestamps.
- Implemented caching mechanisms for audio and timestamp data.
- Added error handling for article retrieval and ElevenLabs API responses.

feat(views): implement article view tracking

- Added functionality to track and increment view counts for articles using Vercel KV.
- Created utility functions for formatting view counts for display.

feat(hierarchy): add documentation on designing hierarchy

- Created a new document outlining principles of design hierarchy, including spacing, contrast, scale, and weight.
- Provided guidelines for designing flows and attention diagnostics.
2025-12-13 14:41:31 +00:00
Raphael S. 5a3fad55b7 feat(views): update view handling with KV configuration check
- Implement checks for KV configuration in view retrieval and increment functions.
- Adjust view count responses based on KV availability.
- Update styles to improve layout and remove unused color files.
2025-12-10 22:34:17 +00:00
Raphael S. 6ed3840de4 feat(views): implement view tracking and display functionality
- Add ViewTracker component to increment view count on page load.
- Integrate view count retrieval in the Header and HomeLayout components.
- Update styles for consistent letter-spacing across components.
- Remove views field from markdown content and source configuration.
- Add API routes for getting and incrementing view counts using Vercel KV.
2025-12-10 13:15:14 +00:00
Raphael S. 9c21c7a4ea feat(tts): implement text-to-speech API and caching mechanism
- Introduced a new API endpoint for text-to-speech functionality.
- Added caching for synthesized audio to improve performance.
- Implemented error handling for article retrieval and TTS processing.
- Enhanced the audio reader component to utilize the new API.
- Updated icon components and layout styles for better UI presentation.

BREAKING CHANGE: The text-to-speech endpoint has changed from `/api/text-to-speech` to `/api/tts`.
2025-12-10 09:17:47 +00:00
Raphael S. d9c2eb39ca fix(text-to-speech): update fallback voice ID and model ID 2025-12-04 16:11:54 +00:00
Raphael S. 2630e82ecb feat(tts): enhance text-to-speech API with voice and model options
- Added support for customizable voice and model IDs in the TTS API.
- Improved alignment handling with new data structures for timestamps.
- Updated caching mechanism to include voice and model in content hash.
- Enhanced logging for better debugging and performance tracking.
2025-11-30 23:34:13 +00:00
Raphael S. 8e50ef4604 feat(tts): implement text-to-speech API for article narration
- Add a new API route for text-to-speech functionality that synthesizes speech from article content.
- Cache audio and timestamp data to improve performance and reduce redundant API calls.
- Handle errors gracefully and provide meaningful responses for missing articles or API failures.

feat(audio-reader): create audio reader component for narration playback

- Develop a client-side audio reader component that fetches narration data and synchronizes word highlighting during playback.
- Implement play/pause functionality with visual feedback for loading and error states.
- Ensure accessibility and responsiveness in the audio playback interface.

feat(rehype): add rehype plugin for word spans in markdown

- Introduce a rehype plugin that wraps words in spans for better interaction with the audio reader.
- Normalize words and manage word IDs for synchronization with audio timestamps.

style(audio-reader): enhance styles for audio reader component

- Improve the visual design of the audio reader component, including button styles and progress indicators.
- Ensure consistent spacing and alignment for a better user experience.

fix(normalize-word): refine word normalization logic

- Update the normalization function to handle various non-word characters more effectively.
2025-11-30 03:31:37 +00:00