{"id":28144837,"url":"https://github.com/facpro070/beastscan-voting-widget","last_synced_at":"2025-10-06T00:04:45.956Z","repository":{"id":292709345,"uuid":"981687772","full_name":"facpro070/beastscan-voting-widget","owner":"facpro070","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-11T21:48:57.000Z","size":95,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-13T10:51:55.430Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://beastscan-voting-widget.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/facpro070.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-11T17:12:11.000Z","updated_at":"2025-05-11T21:49:00.000Z","dependencies_parsed_at":"2025-05-11T18:42:48.657Z","dependency_job_id":null,"html_url":"https://github.com/facpro070/beastscan-voting-widget","commit_stats":null,"previous_names":["facpro070/beastscan-voting-widget"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/facpro070/beastscan-voting-widget","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facpro070%2Fbeastscan-voting-widget","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facpro070%2Fbeastscan-voting-widget/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facpro070%2Fbeastscan-voting-widget/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facpro070%2Fbeastscan-voting-widget/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/facpro070","download_url":"https://codeload.github.com/facpro070/beastscan-voting-widget/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facpro070%2Fbeastscan-voting-widget/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278537774,"owners_count":26003250,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-14T22:13:25.271Z","updated_at":"2025-10-06T00:04:45.939Z","avatar_url":"https://github.com/facpro070.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BeastScan Voting Widget\n\nA modern, interactive voting widget built with Next.js and TypeScript that allows users to vote on ideas and reorder them through drag-and-drop functionality.\n\n## 🛠️ Tools \u0026 Technologies\n\n### Core Technologies\n- **Next.js 14** - React framework with App Router\n- **TypeScript** - For type safety and better developer experience\n- **Tailwind CSS** - For styling and responsive design\n- **shadcn/ui** - For pre-built, accessible UI components\n\n### State Management \u0026 Data Persistence\n- **Zustand** - Lightweight state management\n- **localStorage** - For persisting card data and order\n\n### Drag \u0026 Drop\n- **@dnd-kit** - Modern drag-and-drop library\n  - `@dnd-kit/core` - Core drag-and-drop functionality\n  - `@dnd-kit/sortable` - For sortable lists\n  - `@dnd-kit/utilities` - Helper utilities\n\n### UI/UX Enhancements\n- **Framer Motion** - For smooth animations and transitions\n- **Lucide Icons** - For consistent iconography\n- **UUID** - For generating unique IDs for cards\n\n## 🎯 Design Decisions \u0026 Assumptions\n\n### Architecture\n1. **Component Structure**\n   - Modular design with separate components for cards and modals\n   - Reusable UI components from shadcn/ui\n   - Type-safe props and state management\n\n2. **State Management**\n   - Chose Zustand for its simplicity and performance\n   - Centralized store for card data and operations\n   - Automatic persistence to localStorage\n\n3. **Drag \u0026 Drop Implementation**\n   - Used @dnd-kit for its accessibility and performance\n   - Implemented drag handle for better UX\n   - Visual feedback during dragging operations\n\n### UI/UX Decisions\n1. **Card Design**\n   - Clean, modern card layout with hover effects\n   - Clear visual hierarchy\n   - Responsive grid layout\n   - Smooth animations for interactions\n\n2. **Voting System**\n   - Simple upvote/downvote mechanism\n   - Visual feedback for vote actions\n   - Persistent vote counts\n\n3. **Responsive Design**\n   - Mobile-first approach\n   - Responsive grid layout\n   - Adaptive spacing and typography\n\n### Performance Considerations\n1. **Image Optimization**\n   - Using Next.js Image component for automatic optimization\n   - Lazy loading for better performance\n   - Fallback for invalid images\n\n2. **State Updates**\n   - Efficient state updates with immutable patterns\n   - Debounced localStorage updates\n   - Optimized re-renders\n\n## 🚀 Getting Started\n\n1. Install dependencies:\n   ```bash\n   npm install\n   ```\n\n2. Run the development server:\n   ```bash\n   npm run dev\n   ```\n\n3. Open [http://localhost:3000](http://localhost:3000) in your browser.\n\n## 📝 Future Improvements\n\n1. **Features**\n   - Add user authentication\n   - Implement real-time updates\n   - Add sorting options\n   - Add search/filter functionality\n\n2. **Technical**\n   - Add unit tests\n   - Implement error boundaries\n   - Add loading states\n   - Improve accessibility\n\n3. **UI/UX**\n   - Add dark mode\n   - Improve mobile experience\n   - Add more animations\n   - Enhance drag-and-drop feedback\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacpro070%2Fbeastscan-voting-widget","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffacpro070%2Fbeastscan-voting-widget","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacpro070%2Fbeastscan-voting-widget/lists"}