{"id":27156600,"url":"https://github.com/damianczer/scrum-poker","last_synced_at":"2026-04-13T06:07:29.004Z","repository":{"id":283115770,"uuid":"950719297","full_name":"damianczer/Scrum-Poker","owner":"damianczer","description":"React scrum poker application - estimate tasks. A tool for every agile team. I personally use on a daily basis.","archived":false,"fork":false,"pushed_at":"2025-04-05T18:29:59.000Z","size":69,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-05T19:28:13.139Z","etag":null,"topics":["firebase","javascript","nodejs","react","sass","webpack"],"latest_commit_sha":null,"homepage":"https://www.damianczerwinski.pl/scrum-poker/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/damianczer.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}},"created_at":"2025-03-18T15:29:45.000Z","updated_at":"2025-04-05T18:30:02.000Z","dependencies_parsed_at":"2025-03-18T17:35:34.889Z","dependency_job_id":null,"html_url":"https://github.com/damianczer/Scrum-Poker","commit_stats":null,"previous_names":["damianczer/scrum-poker"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damianczer%2FScrum-Poker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damianczer%2FScrum-Poker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damianczer%2FScrum-Poker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damianczer%2FScrum-Poker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/damianczer","download_url":"https://codeload.github.com/damianczer/Scrum-Poker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247923897,"owners_count":21019078,"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","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":["firebase","javascript","nodejs","react","sass","webpack"],"created_at":"2025-04-08T20:31:05.716Z","updated_at":"2026-04-13T06:07:28.996Z","avatar_url":"https://github.com/damianczer.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Scrum Poker\n\n*Real-time agile estimation tool*\n\n[![GitHub stars](https://img.shields.io/github/stars/damianczer/Scrum-Poker?style=for-the-badge\u0026color=gold)](https://github.com/damianczer/Scrum-Poker/stargazers)\n[![GitHub watchers](https://img.shields.io/github/watchers/damianczer/Scrum-Poker?style=for-the-badge\u0026color=blue)](https://github.com/damianczer/Scrum-Poker/watchers)\n[![GitHub issues](https://img.shields.io/github/issues/damianczer/Scrum-Poker?style=for-the-badge\u0026color=red)](https://github.com/damianczer/Scrum-Poker/issues)\n[![Live Demo](https://img.shields.io/badge/Live-Demo-brightgreen?style=for-the-badge)](https://www.damianczerwinski.pl/scrum-poker/)\n\n| Technology | Version | Purpose |\n|------------|---------|---------|\n| ![JavaScript](https://img.shields.io/badge/JavaScript-ES6+-F7DF1E?style=flat-square\u0026logo=javascript) | `ES6+` | Programming language |\n| ![React](https://img.shields.io/badge/React-19.2.3-61DAFB?style=flat-square\u0026logo=react) | `19.2.3` | Modern UI Framework |\n| ![Sass](https://img.shields.io/badge/Sass-1.97.1-CC6699?style=flat-square\u0026logo=sass) | `1.97.1` | CSS preprocessor |\n| ![Firebase](https://img.shields.io/badge/Firebase-12.7.0-FFCA28?style=flat-square\u0026logo=firebase) | `12.7.0` | Real-time database |\n| ![Webpack](https://img.shields.io/badge/Webpack-5.104.1-8DD6F9?style=flat-square\u0026logo=webpack) | `5.104.1` | Module bundler |\n| ![js-cookie](https://img.shields.io/badge/js--cookie-3.0.5-F7DF1E?style=flat-square\u0026logo=javascript) | `3.0.5` | User preferences management |\n\nEstimate tasks easily with a beautiful, real-time React Application powered by Firebase for Agile teams using Planning Poker methodology.\n\n\u003cimg width=\"1903\" height=\"900\" alt=\"image\" src=\"https://github.com/user-attachments/assets/4431745c-7841-4b3b-b8ee-3dfebd54a7d9\" /\u003e\n\n\u003cimg width=\"1896\" height=\"902\" alt=\"image\" src=\"https://github.com/user-attachments/assets/741c6b0e-cc1a-421f-8f4c-c12606ea63f3\" /\u003e\n\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n**Key Features \u0026 Capabilities:**\n\n- Anonymous Sessions - No registration required, just enter your name.\n- Unique Session IDs - Create or join sessions with shareable links.\n- Hidden Voting - Votes are concealed until reveal.\n- Live Participants - See who's in the session and who voted in real-time.\n- Smart Calculations - Automatic average and individual estimates.\n- Real-time Sync - Powered by Firebase Realtime Database.\n- Theme Selection - Choose from 5 color themes (Green, Blue, Turquoise, Grey, Orange).\n- Dark/Light Mode - Toggle between dark and light themes.\n- Multi-language Support - English \u0026 Polish translations.\n- Persistent Settings - Preferences saved in cookies.\n- PWA Support - Installable as Progressive Web App with offline caching.\n- WCAG Accessibility - Screen reader support, keyboard navigation, focus management.\n- Responsive Design - Optimized for desktop and mobile devices.\n- 100% Real-time - all actions synchronized instantly across all participants.\n\n## 📁 Project Architecture\n\n```\nScrum-Poker/\n├── application/\n│   ├── public/\n│   │   ├── assets/                     # Static assets (icons, images)\n│   │   ├── index.html                  # HTML entry point\n│   │   ├── manifest.json               # PWA manifest\n│   │   └── sw.js                       # Service Worker\n│   │\n│   ├── src/\n│   │   ├── components/\n│   │   │   ├── common/                 # Reusable UI components\n│   │   │   │   ├── Button.jsx          # Button component\n│   │   │   │   ├── ErrorBoundary.jsx   # Error boundary wrapper\n│   │   │   │   ├── FormInput.jsx       # Form input component\n│   │   │   │   └── SessionForm.jsx     # Session form wrapper\n│   │   │   │\n│   │   │   ├── BackgroundIcons.jsx     # Background poker icons\n│   │   │   ├── CardSelection.jsx       # Card voting component\n│   │   │   ├── Content.jsx             # Main content controller\n│   │   │   ├── CreateSessionForm.jsx   # Create session form\n│   │   │   ├── Footer.jsx              # Footer with settings\n│   │   │   ├── GameView.jsx            # Game view wrapper\n│   │   │   ├── Header.jsx              # Application header\n│   │   │   ├── HelpModal.jsx           # Help modal\n│   │   │   ├── JoinSessionForm.jsx     # Join session form\n│   │   │   ├── LegalModal.jsx          # Legal/privacy modal\n│   │   │   ├── LobbyView.jsx           # Lobby view wrapper\n│   │   │   ├── Modal.jsx               # Modal dialogs\n│   │   │   ├── SessionActions.jsx      # Session action buttons\n│   │   │   ├── SessionTimer.jsx        # Session timer component\n│   │   │   ├── ShareModal.jsx          # Share session modal\n│   │   │   ├── UserList.jsx            # Live participants list\n│   │   │   └── UsernameForm.jsx        # Username input form\n│   │   │\n│   │   ├── constants/\n│   │   │   ├── config.js               # Application configuration\n│   │   │   └── constants.js            # Application constants\n│   │   │\n│   │   ├── context/\n│   │   │   └── AppContext.jsx          # React context provider\n│   │   │\n│   │   ├── hooks/\n│   │   │   ├── useDebounce.js          # Debounce hook\n│   │   │   ├── useFocusTrap.js         # Focus trap hook (accessibility)\n│   │   │   ├── useSession.js           # Session management hook\n│   │   │   ├── useSettings.js          # Settings management hook\n│   │   │   └── useUrlSession.js        # URL session params hook\n│   │   │\n│   │   ├── services/\n│   │   │   ├── firebaseService.js      # Firebase database operations\n│   │   │   └── index.js                # Services export\n│   │   │\n│   │   ├── styles/\n│   │   │   ├── _backgroundIcons.scss   # Background icons styles\n│   │   │   ├── _body.scss              # Body styles\n│   │   │   ├── _cardSelection.scss     # Card selection styles\n│   │   │   ├── _content.scss           # Content area styles\n│   │   │   ├── _errorBoundary.scss     # Error boundary styles\n│   │   │   ├── _footer.scss            # Footer styles\n│   │   │   ├── _global.scss            # Global styles \u0026 variables\n│   │   │   ├── _header.scss            # Header styles\n│   │   │   ├── _helpModal.scss         # Help modal styles\n│   │   │   ├── _legalModal.scss        # Legal modal styles\n│   │   │   ├── _modal.scss             # Modal styles\n│   │   │   ├── _shareModal.scss        # Share modal styles\n│   │   │   ├── _userList.scss          # User list styles\n│   │   │   └── _variables.scss         # SCSS variables\n│   │   │\n│   │   ├── translations/\n│   │   │   ├── en.json                 # English translations\n│   │   │   └── pl.json                 # Polish translations\n│   │   │\n│   │   ├── utils/\n│   │   │   ├── cardUtils.js            # Card utility functions\n│   │   │   ├── i18n.js                 # Internationalization utility\n│   │   │   ├── icons.js                # FontAwesome icons\n│   │   │   ├── logger.js               # Logging utility\n│   │   │   ├── serviceWorker.js        # Service Worker registration\n│   │   │   └── validation.js           # Validation functions\n│   │   │\n│   │   ├── App.jsx                     # Root component\n│   │   ├── App.scss                    # Main application styles\n│   │   ├── firebaseConfig.js           # Firebase configuration\n│   │   └── index.js                    # React DOM rendering entry point\n│   │\n│   ├── package.json                    # Dependencies \u0026 scripts\n│   └── webpack.config.js               # Webpack build configuration\n│\n├── LICENSE                             # MIT License\n└── README.md                           # Project documentation\n```\n\n## ⚒️ Installation \u0026 Setup\n\n### Prerequisites\n\n```bash\n- Node.js 14.0.0 or higher\n- npm 6.0.0 or higher (or yarn/pnpm equivalent)\n- Modern web browser (Chrome, Firefox, Safari, Edge)\n- Firebase account (for your own instance)\n```\n\n### Quick Start\n\n```bash\n# 1️⃣ Clone the repository\ngit clone https://github.com/damianczer/Scrum-Poker.git\n\n# 2️⃣ Navigate to project directory\ncd Scrum-Poker/application\n\n# 3️⃣ Install dependencies\nnpm install\n\n# 4️⃣ Start development server\nnpm start\n\n# 🎉 Application will open at http://localhost:3000\n```\n\n### Build for Production\n\n```bash\n# Create optimized production build\nnpm run build\n\n# Production files will be in the 'dist' folder\n# Deploy the entire dist folder to your web hosting\n```\n\n### Additional Commands\n\n```bash\n# Run production build\nnpm run deploy\n```\n\n## 📜 License\n\n```\nCopyright © 2025 Damian Czerwiński\n\nThis project is copyrighted and proprietary software.\nAll rights reserved.\n\nUnauthorized copying, modification, distribution, or use of this software,\nvia any medium, is strictly prohibited without explicit written permission\nfrom the copyright holder.\n\nFor licensing inquiries or permission requests:\n📧 Email: kontakt@damianczerwinski.pl\n🌐 Web: https://www.damianczerwinski.pl\n```\n\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \n**Made with ❤️ and ☕ by Damian Czerwiński**\n\n*Building beautiful, functional web experiences one component at a time*\n\n\u003c/div\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdamianczer%2Fscrum-poker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdamianczer%2Fscrum-poker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdamianczer%2Fscrum-poker/lists"}