📈 GH Trending Explorer 🎲 Surprise me

← all repos

nunomaduro / dev-null.sh

git clone https://github.com/nunomaduro/dev-null.sh.git

dev-null.sh

—
stars, 24h
+412
stars, 7 days · #144
+412
stars, 30 days · #659
412
★ total · +412% this week
178
forks · 351 open issues

Star history starts 2026-10-20; the chart appears after the second daily snapshot.

LanguagePHP
License—
Created2026-10-15 (5d ago)
Last pushtoday
Watchers5
OwnerUser

Links

README excerpt
# Project setup
A social network for developers. Sign in with GitHub, follow developers, and share commits.
Read the knowledge base for the stack, hosting, repository, and platform lore.
## Getting Started
Requires PHP 8.5+, Composer, Bun, and PostgreSQL 17+ with the pgvector and `pg_trgm` extensions available. Laravel Herd's PostgreSQL service ships with both. Create a `devnull` database for the app and a `testing` database for the test suite.
 [code] 
The setup script installs dependencies, creates `.env`, generates an app key, runs migrations, and builds assets.
### Local sign-in
With `APP_ENV=local`, run `composer dev`, visit `http://localhost:8000` (or your configured `APP_URL`), and sign in: a modal asks for a username and signs you in as that user, creating it if it doesn't exist yet. GitHub isn't involved at all. The routes are only registered in the local environment, see `routes/web.php`.
### GitHub login
Outside the local environment, users sign in with GitHub. Create a GitHub OAuth app with the callback URL `{APP_URL}/auth/github/callback`, then set `GITHUB_CLIENT_ID` and `GITHUB_CLIENT_SECRET` in `.env`.
### Issue commands
The `/feature` and `/bug` commands below the composer open an issue on `nunomaduro/dev-null.sh` from the draft, as a GitHub App crediting the reporter. No user grants any extra permission and no user token is stored. Create a GitHub App with webhooks disabled and only the **Issues: Read and write** repository permission, install it on `nunomaduro/dev-null.sh` alone, generate a private key, then set `GITHUB_APP_ID` and `GITHUB_APP_PRIVATE_KEY` (the PEM contents, with newlines written as `\n`) in `.env`. Each installation token is requested for issues on this repository only and is cached, encrypted, for 50 minutes.
### Embeds
A link card for a video, song or pen becomes a player that loads when clicked. The player URL is built on the server from the link, so only the sites below can be framed. None of them need an API key.
| Key | Links |
|---|---|
| `youtube` | `youtube.com/watch`, `youtu.be`, `/shorts`, `/live`, `/playlist` (with `t=` start times) |
| `vimeo` | `vimeo.com/{id}`, unlisted `vimeo.com/{id}/{hash}`, channels and groups |
| `loom` | `loom.com/share/{id}` |
| `twitch` | channels, `/videos/{id}` and clips |
| `suno` | `suno.com/song/{id}` |
| `spotify` | tracks, albums, playlists, artists, episodes and shows |
| `soundcloud` | tracks and sets |
| `apple_music` | albums, playlists and songs |
| `codepen` | pens |
| `asciinema` | recordings |
| Variable | Default | |
|---|---|---|
| `EMBEDS_ENABLED` | `true` | `false` turns every link back into a plain link card |
| `EMBEDS_PROVIDERS` | empty (all) | Comma-separated keys from the table above, such as `youtube,suno,spotify` |
| `EMBEDS_YOUTUBE_PRIVACY_ENHANCED` | `true` | Plays YouTube from `youtube-nocookie.com` |
Twitch requires the embedding site's host, which is taken from `APP_URL`. To add a site, implement `App\Contracts\Services\EmbedProvider` and re