This repository is a TypeScript-based web library designed for browser screenshot capture and annotation. It functions as a plugin that initializes a DOM overlay, captures screen content via multiple strategies (WebRTC, html2canvas, DOM rendering), and provides a rich annotation interface for drawing shapes, text, and cropping. The architecture is monolithic, bundling into UMD, ESM, and CommonJS formats via Rollup, and utilizes MobX for reactive state management across canvas elements and UI components. The system relies on a core entry point in `src/main.ts` which exports the `ScreenShot` class. Data flows from the source manager selecting a capture strategy, rendering to an HTML5 Canvas, and then managing user interactions through a centralized store system. External dependencies include `html2canvas` for DOM capture, `nanoid` for ID generation, and `mobx` for state. The codebase includes comprehensive unit testing via Jest and E2E testing via Playwright, indicating a focus on reliability. While the library is well-structured with clear separation of concerns between application logic, canvas features, and shared utilities, it is tightly coupled to the browser environment and specific canvas element types. The presence of a `TEST_IMPROVEMENT_PLAN.md` suggests ongoing refinement of test coverage, but the core architecture remains stable and functional for its intended domain of web-based screenshot tools.
PhotoEditor is an Android library (published on Maven Central) that provides a comprehensive image editing SDK. It allows users to draw on images with customizable brushes and shapes (line, oval, rectangle, arrow), apply filter effects via Android's deprecated MediaEffect API, add and edit text with rich styling (color, font, shadow, border), insert emoji and stickers, and perform pinch-to-scale/rotate gestures on added elements. The library is built around a `PhotoEditorView` custom RelativeLayout that composes an ImageView, a DrawingView (custom canvas for brush/shape rendering), and an ImageFilterView (GLSurfaceView for filters). The architecture employs several design patterns: Builder (PhotoEditor, ShapeBuilder, TextStyleBuilder, SaveSettings), Composite (Graphic interface with Text, Sticker, Emoji implementations), Strategy (Shape interface with concrete shapes), and Listener (OnPhotoEditorListener, BrushViewChangeListener). The sample app demonstrates all features. The library has a robust undo/redo system managed by GraphicManager and PhotoEditorViewState. While the core functionality is solid, the filter implementation relies on deprecated Android APIs (android.media.effect), which is a known limitation and source of issues. The codebase is well-structured with unit and instrumentation tests, CI/CD pipelines, and proper Kotlin coroutines for async saving.
Cursify is a Next.js application that serves as both a documentation site and a component library for custom cursor animations and background patterns. It provides over 30 cursor effects (e.g., fluid, neon, blob, fairy dust, glitch) and 12+ pattern animations (e.g., flowing dots, vertical bars, sliding ease), each with live previews, code snippets, and installation instructions. The architecture is a static Next.js site using the App Router, MDX for content, and a registry of reusable React components. The codebase is well-organized with separate directories for hooks, UI primitives, and registry components. It relies on several animation libraries (Framer Motion, react-spring, motion) and Radix UI for interactive elements. The primary data flows are static: MDX content is rendered server-side, and client-side interactivity is handled via React hooks and canvas/WebGL. There is no backend or API; the site is purely a documentation and showcase platform.
This is a monorepo for a web-based vector graphics editor (similar to Figma) built with React, Canvas2D, and TypeScript. It features a core editor with drawing tools, layers, path editing, undo/redo, SVG import/export, and real-time multiplayer collaboration (via Yjs/Hocuspocus). The architecture includes a standalone editor app, a deprecated multiplayer variant, a backend (NestJS + Prisma + PostgreSQL) for authentication and file storage, and a workbench for team management. Shared packages provide geometry utilities, UI components, icons, and Skia PathKit WASM bindings. The codebase demonstrates strong engineering patterns (command pattern, event emitter, strategy pattern) and provides several reusable components, especially the geometry library and UI components. However, there is significant code duplication between the standalone and multiplayer apps, and the multiplayer app is deprecated, indicating some drift risks. The backend is functional but has minimal stubs and a hardcoded JWT secret.
This repository is a collection of Agent Skills for AI coding assistants (Claude Code, Codex, OpenCode) that enables them to interact with Obsidian vaults. It contains six skill definitions: obsidian-markdown (creating Obsidian Flavored Markdown with wikilinks, embeds, callouts, properties), obsidian-bases (creating database-like .base files with views, filters, formulas), json-canvas (creating visual .canvas files with nodes and edges), obsidian-cli (interacting with Obsidian via CLI for note management and plugin development), defuddle (extracting clean markdown from web pages), and knap (rendering Markdown templates from structured data). Each skill is a self-contained markdown file following the Agent Skills specification, providing detailed syntax, examples, and validation steps. The repository is purely documentation with no executable code, serving as a knowledge base that AI agents use to perform Obsidian-related tasks on behalf of users.
modV is a desktop application for real-time audio-visual synthesis and effects processing. Built with Electron, Vue.js, and WebGL, it provides a modular environment where users can create chains of visual modules (2D, 3D, shader-based) that react to audio, MIDI, or user-defined parameters. The application features a dual-store Vuex architecture (main and worker processes) to keep the UI responsive while handling intensive graphics and audio processing in a background thread. Key capabilities include audio feature extraction via Meyda, MIDI input mapping, a plugin system for extensibility, and a preset system with seamless state switching. The project emphasizes real-time performance and flexibility for VJs, artists, and live visual performers.
ASCII Art Paint is a fully client-side web application for creating and editing ASCII art. It runs entirely in the browser with no backend or dependencies. The application provides a canvas grid of cells (each holding a character), a palette of symbols, drawing tools (pencil, eraser, fill, pipette, selection), undo/redo, and drag-and-drop file loading. It also includes image-to-ASCII conversion (including Braille mode), custom font loading, and a built-in text editor. The UI supports dark/light themes and canvas zoom. The application is implemented as a single HTML file with embedded CSS and JavaScript, making it portable and easy to host. While the code is monolithic and lacks formal tests, it demonstrates competent use of native browser APIs for a niche creative tool.
This repository is a comprehensive frontend visual effects collection and demonstration platform. It contains over 100 self-contained demos and tools covering CSS animations, Canvas 2D/WebGL effects, Three.js 3D scenes, ECharts data visualizations, AI/ML integrations (TensorFlow.js for pose detection and body segmentation, MediaPipe, Tesseract.js OCR), and client-side media processing (image, video, PDF). The architecture is a React 18 single-page application (SPA) using TypeScript, Webpack 5, Ant Design, and react-intl for internationalization. All processing occurs entirely in the browser; there is no backend or persistent data store. The project serves as both a personal portfolio and a learning resource for advanced frontend techniques, but it is not a single-purpose production application. The code quality varies widely: some components demonstrate high craftsmanship (e.g., custom PNG encoder, image manipulation utilities, cross-page communication hook), while many others are boilerplate-heavy duplicates or exploratory demos. No automated tests are present, and the build output includes large minified chunks alongside source code, creating maintenance overhead.