# Astral: Self-Hostable GitHub Stars Organizer Built on Laravel

> Astral is a BSD-3-Clause PHP application that organizes GitHub stars with tags, notes, and fuzzy search, available as a free hosted service at app.astralapp.com or as a self-hosted Laravel install. It connects to GitHub through OAuth and requires PHP 7, Node.js, Yarn, and a MySQL database to run locally.

**astralapp/astral** — Organize Your GitHub Stars With Ease

- Repository: https://github.com/astralapp/astral
- Website: https://astralapp.com
- Stars: 3,586 · Forks: 152
- Language: PHP
- License: BSD-3-Clause
- Published: 2026-09-23 · Updated: 2026-09-23 · Language: en
- Canonical page: https://hysenlabs.com/projects/astralapp-astral

## Organizing GitHub Stars: The Problem Astral Addresses

GitHub's star feature marks a repository as interesting, but the default view is a flat, reverse-chronological list. There is no built-in tagging, grouping by topic, or fuzzy search across starred repository names and descriptions.

Astral connects to GitHub via OAuth and imports your starred repositories into a local database, where you can assign tags and add notes. A fuzzy search across your stars, powered by the fuzzysearch package, lets you retrieve a repository without scrolling through hundreds of entries. The README describes the application as organizing your GitHub stars with ease and provides a free hosted version so engineers who do not want to run their own server can get started immediately. The self-hosted option gives engineers control over their data and the ability to run the application on their own domain.

## Architecture: GitHub OAuth, Laravel Backend, and Vue 2 Frontend

Astral is a Laravel application with a Vue 2 single-page frontend. The backend handles GitHub OAuth authentication and stores starred repositories, tags, and notes in a relational database. The `.env.example` file shows MySQL as the default database connection, with `DB_CONNECTION=mysql`.

Authentication works through a GitHub OAuth App. The `.env.example` file includes three required GitHub configuration keys: `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET`, and `GITHUB_CLIENT_CALLBACK_URL`. The callback URL in the example file is `https://astral.test/auth/github/callback`, matching the local development domain convention. The `APP_KEY` field must be generated before the application can run, which the `php artisan astral:install` command handles.

The frontend uses Vue 2 with Vuex for state management and Vue Router for client-side navigation. The package.json includes fuzzysearch for in-browser fuzzy matching across repository data, EasyMDE for markdown note editing, and Dragula for drag-and-drop sorting. The awesomplete package handles autocomplete inputs, and highlight.js handles syntax highlighting in notes. The frontend build runs through Laravel Mix, which wraps Webpack.

## Self-Hosting: Prerequisites and the Four-Command Setup

The README states that PHP 7, Node.js, and Yarn must be installed before starting. A web server host for your local domain is also needed. The README suggests Laravel Homestead or Valet for this.

Clone the repository, install PHP and JavaScript dependencies, run the install artisan command, and start the frontend build watcher:

```bash
git clone git@github.com:astralapp/astral.git
cd astral && composer install && yarn
php artisan astral:install
yarn dev
```

Once the server is running, the README says the URL will likely default to `http://astral.test` when using Laravel Valet. The GitHub OAuth App must be created before this step, with the client ID, client secret, and callback URL set in the `.env` file. The `.env.example` file in the repository shows the full list of environment variables, including database credentials and application settings.

## The Free Hosted Version and Its Limitations

The hosted instance at app.astralapp.com is free to use and requires only a GitHub account for login. No server setup is needed, and the service has no ads or tracking. The README states that user data is not exploited or sold and the service is funded entirely by donations.

The README links to a GitHub Discussions thread (issue #1567) that lists specific limitations of the public instance compared to self-hosted setups. The content of that discussion is not included in the README, but the reference indicates there are functional differences between the hosted and self-hosted versions.

For teams or engineers with privacy requirements, or who need to keep their star data under their own control, self-hosting is the appropriate path. The `.env.example` shows that all application configuration, including the encryption key for credentials cookies, is managed through environment variables.

## Cloudron Deployment and One-Click Options

Beyond manual self-hosting, the README mentions one deployment shortcut: a 1-Click Install through Cloudron, a self-hosting platform that manages app installation, updates, and backups on your own server. The Cloudron app is at cloudron.io/store/com.astralapp.cloudronapp.html.

For production deployments outside Cloudron, the README does not document server configuration, NGINX or Apache setup, or production environment steps. The standard Laravel deployment documentation covers these topics, and Astral follows the same conventions. The `yarn dev` command runs in development mode; a production build would use `yarn prod` based on the scripts in package.json, though the README only mentions the dev command in the setup steps.

The session encryption key in Astral deserves attention: the `APP_KEY` value in `.env` must be set to a secure random string. The `php artisan astral:install` command generates this as part of setup.

## Limitations: PHP 7, Vue 2, and Dependency Age

The README states PHP 7 as the minimum requirement. PHP 7 reached end of life in 2022, and PHP 8.x is the current series. Whether Astral works on PHP 8 is not documented in the README.

The frontend is built on Vue 2, which reached end of life in December 2023. The package.json pins Vue at version 2.5.13, with a range of other packages from the late 2010s and early 2020s. Engineers running the self-hosted version in 2026 may encounter Node.js compatibility issues with these older package versions.

The repository has no GitHub Releases tagged. The README notes an active development branch called `next` that represents the future of the project, but the README also asks contributors not to submit pull requests against the `master` branch with new features, as they may have been addressed in the `next` branch. The last push to the main branch was on 2026-07-11.

## GitHub Lists as a Built-In Alternative

GitHub introduced a built-in Lists feature for organizing starred repositories into named collections. GitHub Lists requires no external application, no OAuth setup, and no server to maintain. The trade-off is that GitHub Lists is a flat grouping mechanism without fuzzy search across all stars, notes on individual repositories, or the ability to run the interface under your own domain.

Astral's advantage is the tag-and-search model: a single repository can have multiple tags, and fuzzy search runs across all starred repositories at once rather than browsing through lists. Engineers who star repositories across many topics and want cross-cutting search rather than mutually exclusive lists may find Astral's model more useful.

The BSD-3-Clause license places minimal restrictions on use. It requires that the copyright notice and disclaimer be retained in source and binary distributions, and prohibits using the project name in endorsements without permission. The license is compatible with commercial use, so teams running the self-hosted version in a company environment face no license barrier.

## Conclusion

Astral is a practical choice for engineers who star many GitHub repositories and want tags and fuzzy search rather than a flat list. The free hosted version at app.astralapp.com requires no setup beyond a GitHub OAuth connection. The self-hosted path requires PHP 7, Node.js, Yarn, and a MySQL database, and involves a Laravel environment that takes time to configure. The package.json depends on Vue 2 and other dated dependencies, so engineers running the self-hosted version should verify the frontend build still works on current Node.js versions before deploying. The last push was on 2026-07-11.

## FAQ

### Does Astral have a free version I can use without setting up a server?

Yes. The README describes a free hosted instance at app.astralapp.com. It has no ads or tracking, and user data is not sold. The README links to a GitHub Discussions thread that describes the specific limitations of the hosted version compared to self-hosting.

### What database does Astral require for self-hosting?

The `.env.example` file in the repository sets `DB_CONNECTION=mysql`, indicating MySQL as the default database. The README does not document support for other database engines.

### Does Astral require a GitHub OAuth App?

Yes. The README states that creating a new GitHub OAuth App is one of the prerequisites for self-hosting. The `.env.example` file shows three required GitHub configuration keys: `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET`, and `GITHUB_CLIENT_CALLBACK_URL`.

## Sources

- [astralapp/astral on GitHub](https://github.com/astralapp/astral)
- [Issues](https://github.com/astralapp/astral/issues)
- [License: BSD-3-Clause](https://github.com/astralapp/astral/blob/main/LICENSE)
- [Project website](https://astralapp.com)
- [README](https://github.com/astralapp/astral/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/astralapp-astral
