renatomarinho/laravel-gitscrum
GitScrum is a Laravel-based project management tool that blends Scrum workflows with Git integration, letting developers manage tasks, sprints, and issues from GitHub, GitLab, and Bitbucket in one streamlined interface.
GitScrum is not a library you require into an existing Laravel app — it is a Laravel application (Laravel 5.4/5.5-era). Even though it ships on Packagist as renatomarinho/laravel-gitscrum, the intended workflow is composer create-project or a git clone, then run it as its own self-hosted Scrum board. Plan for it as a separate deployment alongside your real product, not as a package inside it.
Release 1.1.0 does not change this. The changelog is feature/maintenance work (label filters, AJAX issue creation, sync tweaks, a sprint privacy fix, Laravel Page Speed, test/seeder config) — no framework or PHP version bump. Before you start, re-read composer.json and the README in the tag you are installing; that file, not the changelog, tells you the real runtime. Default assumption remains PHP 7.0–7.2, MySQL 5.6/5.7.
Minimal bring-up:
composer create-project renatomarinho/laravel-gitscrum gitscrum --prefer-dist
cd gitscrum
cp .env.example .env
php artisan key:generate
# edit .env: DB_*, APP_URL, MAIL_*, GITHUB_CLIENT_ID/SECRET/CALLBACK_URL
php artisan migrate
php artisan db:seed
php artisan serve
Where to look first, in order:
routes/web.php — the whole surface area is a handful of resource routes (projects, sprints, user stories, tasks, issues). 1.1.0 added AJAX endpoints for issue creation, so check this file rather than trusting older route lists.app/Http/Controllers/ — board logic plus GitHub/Bitbucket/GitLab sync. IssueController was refactored in 1.1.0, so any local patch you carried there needs re-applying..env + config/gitscrum.php / config/services.php — OAuth credentials, integration toggles, and whatever knobs Laravel Page Speed introduced.database/migrations/ — the actual domain model; read these before writing any report or query (including the new seeder/test config).resources/views/ — Blade templates you will end up editing because there is no real theming layer.First use case that proves the tool out: create a project → connect a GitHub repo via OAuth → create a sprint (test a private one — 1.1.0 claims to fix private-sprint mode) → populate user stories from the backlog → tag a couple with labels → drag them across the board → create an issue from the board via the new AJAX form. If OAuth round-trip, label filtering, and commit/issue sync all work, the rest of the app is just CRUD.
Run it as a satellite app. Deploy it on its own subdomain (e.g. scrum.internal.example.com) behind your SSO or basic auth. Treat its database as a separate schema. This keeps the 2017 dependency tree away from anything customer-facing.
Repo integration is the whole point — set it up deliberately. Register a GitHub OAuth app with a callback that exactly matches APP_URL + the route GitScrum expects. Then add the webhook for the repo so commits and issues flow in. Typical day-to-day loop:
storage/logs/laravel.log when the modal "does nothing".Team and permissions setup early. Roles are project-scoped; get the project owner and member assignments right before inviting people, because re-parenting users later is manual DB work. The 1.1.0 private-sprint fix is worth re-testing with a non-owner account: confirm a private sprint is actually invisible/read-only server-side, not merely hidden in the UI.
Extend by owning the fork, not by hoping for hooks. Because you have the full app source, the practical extension patterns are:
resources/views/ directly (no publish tags to lean on). Diff your overrides against upstream on every version bump — 1.1.0 touched controllers and likely views.app/Console/Commands for exports, nightly velocity snapshots, or Slack digests; wire it into app/Console/Kernel.php.UserStory::updated, etc.) to push notifications out to Slack/Teams instead of polling.Ops pattern:
* * * * * php artisan schedule:run.config/queue.php and the sync controllers before assuming.mysqldump of the GitScrum schema; it is the only copy of your sprint history.APP_DEBUG=false and a real APP_URL in production, permanently.Fork-and-pin strategy for maintenance. Commit the composer.lock, pin the PHP version in a Docker image, and never run composer update casually. Upgrading to 1.1.0 is a cherry-pick/rebase onto your fork: pull the release, re-apply local view and controller patches, run your new test suite, then re-run the private-sprint and re-sync checks before touching production data.
composer require renatomarinho/laravel-gitscrum in your existing app gives you a second Laravel application's source tree, conflicting service providers, conflicting migrations, and no clean integration seam. Don't.db:seed creates an admin account with known credentials — change the password and the email immediately, or don't seed in production. 1.1.0 reworked seeders, so re-check what db:seed inserts rather than assuming it's unchanged.TIMESTAMP defaults, index lengths, implicit utf8mb4 conversions). Workaround: run migrations with a relaxed sql_mode, or patch the migrations. Do this before you have data.public/ assets once and never rebuild. Note that 1.1.0's AJAX issue creation may include JS changes — check whether public/ needs a rebuild or whether compiled assets were committed.APP_URL vs. the real scheme/host, or a proxy stripping X-Forwarded-Proto. Set TrustProxies and a correct APP_URL before debugging the provider.web middleware group. Exclude it in VerifyCsrfToken (and verify the payload signature yourself, since the built-in check is dated).routes/ first. If you need one, add it: a small API controller reading the same Eloquent models is cheaper than scraping the HTML.storage/logs/laravel.log, php artisan route:list | grep, php artisan tinker to inspect projects, sprints, user_stories, tasks, labels directly. Most "the board is wrong" reports are a status enum value that no view accounts for.How can I help you explore Laravel packages today?