Impro#
Impro is a Bluesky web client written in HTML, CSS, and JavaScript.
You can try it out here: https://impro.social
What makes Impro great?#
Impro is:
- Web-first: Impro was built from scratch for the web, with no heavy cross-platform frameworks or libraries.
- Familiar by default: Out of the box, Impro offers the same feature set as the main Bluesky client.
- Extensible by design: If you want additional functionality, you can use Community Plugins to customize your experience.
- Better about blocking: Unlike the main client's "nuclear block", thread context is preserved for non-blocked users.
Issues and feature requests#
If you notice a bug or feature missing, please open an issue for it or thumbs-up an existing issue!
Backend#
Impro uses the Bluesky API for authentication and data fetching. Additionally, it uses Constellation to populate blocked replies.
Dependencies#
Impro uses the following libraries:
- lit-html for declarative rendering
- HLS.js for streaming video
- emoji-picker-element for emoji picker UI
- marked and DOMPurify for rendering plugin READMEs
The icons are from the Majesticons free icon set (MIT license).
Development#
Impro is a single-page app built with Eleventy. To run the development server, run:
npm run start
If you'd like to test changes to the Oauth configuration, you can start the server with a Cloudflare Tunnel (requires cloudflared):
npm run start:tunnel
External libraries are included as standalone files in lib. In cases where bundling is needed, the libraries are bundled with esbuild. Changes to these bundles should be rare, but can be triggered manually with the following commands:
npm run bundle:capacitor
npm run bundle:lit-html
AI Disclosure#
The core of Impro is human-designed and human-written, but some views and components were generated using Claude Code. The project owner has reviewed the generated code and takes full responsibility for its accuracy and completeness.