$10 once, or a membership

Instagram

Photo and video feed with an Expo app.

Surfaces
web, admin, mobile
Architecture
triple
Or $20 a month for all of them

$10 buys this one repository, permanently. Checkout asks for your GitHub username and the invitation arrives within a minute.

What it looks like

  • A post of up to ten photos and videos.

    A post of up to ten photos and videos.

  • The home feed, with stories across the top.

    The home feed, with stories across the top.

  • A profile, its grid and its follower counts.

    A profile, its grid and its follower counts.

Screenshots of the running application, with its demo data. Nothing here is a mock-up.

{ What you open it for }

The parts that are actually hard.

Every application shows how to build an application, and that sentence helps nobody choose. These are the specific problems this one has already solved.

  • Image and video processing on upload, and what to do off the request

  • A feed that paginates without drifting as new posts arrive

  • Mobile capture and upload from Expo

{ Run it }

Seven commands, then it is running.

No Docker and no database server. Every blueprint runs on SQLite with files on local disk, so the only thing between a clone and a working application is pnpm install.

What you need first

  • Go 1.21 or newer
  • Node 20 or newer
  • pnpm 10.33.4
  • The Grit CLI, 3.309.0 or newer (grit update)
  • ffmpeg, for video posts
  • No Docker: it runs on SQLite

What each one does

  1. git clone git@github.com:MUKE-coder/grit-instagram.git && cd grit-instagram

    Private. Accept the GitHub invitation first: it arrives within a minute of paying.

  2. grit env

    Writes .env from .env.example with every secret freshly generated.

  3. pnpm install

    The monorepo: API, web, admin and the Expo app.

  4. grit migrate

    Creates the SQLite database and every table.

  5. grit seed

    The admin account.

  6. cd apps/api && go run ./cmd/demo && cd ../..

    People, posts and stories, so the feed has something in it.

  7. grit start

    API on 8080, web on 3000, admin on 3001.

instagram / terminal
git clone git@github.com:MUKE-coder/grit-instagram.git && cd grit-instagram
grit env
pnpm install
grit migrate
grit seed
cd apps/api && go run ./cmd/demo && cd ../..
grit start

Then open

http://localhost:3000/login

ada@demo.example.com / admin123

The feed, a carousel post, stories and a profile.

http://localhost:3001

admin@example.com / admin123

The admin panel: posts, comments and reports.

Worth knowing

Video needs ffmpeg

Posting a video transcodes it and takes a poster frame, both off the request. Without ffmpeg on PATH a photo post still works and a video post fails with a clear error rather than a broken file.

ffmpeg -version    # anything recent

The Expo app

Capture and upload run on a phone. Point the app at your machine on the network, not localhost, or the image will not load.

pnpm --filter mobile start

{ Access }

One of them, or every one of them.

$10 buys a single blueprint and keeps it. A membership covers all of them, including the ones that are still on the list, for as long as it runs.

Permanent access to this repository. No renewal, nothing to cancel.

  • Membership

    $20a month

    Every blueprint, including the ones added while you are a member.

  • Membership, yearly

    Two months free

    $200a year

    The same thing for the price of ten months.

  • Lifetime

    $400once

    Every blueprint there is, and every one there will be. Nothing to renew.

  • Or $10 for a single blueprint, kept permanently.
  • The invitation reaches your GitHub account within a minute.
  • A membership covers every blueprint added while it runs.
  • Cancel whenever. What you have already cloned stays yours.