Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/massivdash/astrox
Astro.build + Actix combo + Tools: A 🦀 Rust orientated monolithic template for building modern web applications.
https://github.com/massivdash/astrox
actix astro monolith monorepo rust svelte template typescript webapp
Last synced: 1 day ago
JSON representation
Astro.build + Actix combo + Tools: A 🦀 Rust orientated monolithic template for building modern web applications.
- Host: GitHub
- URL: https://github.com/massivdash/astrox
- Owner: MassivDash
- Created: 2024-01-04T23:12:35.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-09-12T07:54:10.000Z (2 months ago)
- Last Synced: 2024-09-12T17:55:50.431Z (2 months ago)
- Topics: actix, astro, monolith, monorepo, rust, svelte, template, typescript, webapp
- Language: Rust
- Homepage: https://astrox.spaceout.pl/
- Size: 4.2 MB
- Stars: 7
- Watchers: 2
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
AstroX (Actix + Astro.build)
█████ ███████ ████████ ██████ ██████ ██ ██
██ ██ ██ ██ ██ ██ ██ ██ ██ ██
███████ ███████ ██ ██████ ██ ██ ███
██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ███████ ██ ██ ██ ██████ ██ ██+
🦀 Rust orientated monolithic template for building modern web
applications.![CodeQL](https://github.com/MassivDash/ado-npmrc-ts-action/actions/workflows/codeql-analysis.yml/badge.svg)![CI](https://github.com/MassivDash/astrox/actions/workflows/ci.yml/badge.svg)![Compliation](https://github.com/MassivDash/astrox/actions/workflows/release.yml/badge.svg)!
**Platforms**
![windows](https://img.shields.io/badge/Platform-Windows-blue)
![linux](https://img.shields.io/badge/Platform-Linux-blue)
![macOs](https://img.shields.io/badge/Platform-MacOs-blue)## Monolithic repo for developing full stack application, using rust and cargo tools as primary development environment.
Frontend is a standalone astro.build application that will create the frontend bundle served by rust actix server.
## Rust + Astro web development boilerplate.
To start developing with AstroX you will need rustc > 1.74 and node > 18.14. Clone the project and execute;
```
cargo run
```That's all you need to get started, the interactive cli will guide you through installation process.
## Features
### CLI
Rust written command line interface starts, serves and tests the astro x project. Fast and efficient with only few dependencies will create a professional development environment for rust opinionated project.
#### Cli Project Runner
Handles installation and system checks, it will check the astroX system prerequisites and either help you install or provide you with necessary information to start the project.
- automatic development port rotation for frontend and backend
- interactive mode, execute actions through cli gui
- git hooks integration
- build the packages
- serve the bundle (with auto restart)
- test the project
- execute the project with cmd line arguments#### Git hooks
Pre defined git hooks for quality code writing
- commit msg via commitlint-rs
- pre-commit (test and lint staged files)
- pre-push (test all)#### CLI arguments
```sh
Command list:
--help [print this help ]
--sync-git-hooks [copy git_hooks folder contents to .git/hooks]
--remove-git-hooks [remove hooks from .git/hooks folder]
--build [build production bundle for frontend and backend]
--serve [start the production server with the frontend build]
--test [run the tests]
--create-toml [create a new Astrox.toml file]
--interactive [start the interactive mode]
--system-checks [run the system checks]
--coverage [run cli and backend coverage]Cli arguments:
--host="127.0.0.1" [ip address]
--port=8080 [actix port number]
--env=prod / dev [environment]
--astro-port=4321 [astro development port number]
--prod-astro-build=true / false [Build astro during cli prod start]
--set-public-api=https://custom.api/api [cli to astro env creation, used for static server url call building]
```### Actix backend
https://actix.rs/docs/getting-started/
Rust based server from Actix framework.
- serve static astro x files
- 3rd api call example
- logging
- graphql [coming soon]
- ssr [coming soon]### Astro
https://astro.build/
Astro is a frontend framework that focuses on mainly on delivering html first, the fastest and most versatile of the frameworks allows to incorporate any of the major UI frameworks such as React, Svelte, Vue, Solid.js and others ...
The boilerplate provides and example of the Astro 4.0 transition capabilities.
## Project Structure
```bash
AstroX
├─ .github //workflows and ci/cd checks
├─ └─ workflows
├─ └─ ├─ codeql-analysis.yml
├─ └─ ├─ pr.yml
├─ └─ └─ relase.yml
├─ git_hooks // set up git hooks for development
├─ ├─ commit-msg
├─ ├─ commit-msg-windows-example
├─ ├─ pre-commit
├─ └─ pre-push
├─ src
├─ ├─ backend //Actix backend, own rust project
├─ ├─ ├─ src
├─ ├─ ├─ ├─ api //Api routes examples
├─ ├─ ├─ ├─ ├─ hello
├─ ├─ ├─ ├─ ├─ ├─ get.rs
├─ ├─ ├─ ├─ ├─ ├─ mod.rs
├─ ├─ ├─ ├─ ├─ └─ post.rs
├─ ├─ ├─ ├─ ├─ space_x // server to server call
├─ ├─ ├─ ├─ ├─ ├─ get.rs
├─ ├─ ├─ ├─ ├─ └─ mod.rs
├─ ├─ ├─ ├─ └─ mod.rs
├─ ├─ ├─ ├─ args
├─ ├─ ├─ ├─ ├─ collect_args.rs
├─ ├─ ├─ ├─ └─ mod.rs
├─ ├─ ├─ ├─ auth // Simple auth route middleware
├─ ├─ ├─ ├─ ├─ auth_middleware.rs
├─ ├─ ├─ ├─ ├─ login.rs
├─ ├─ ├─ ├─ └─ mod.rs
├─ ├─ ├─ ├─ cors
├─ ├─ ├─ ├─ ├─ get_cors_options.rs
├─ ├─ ├─ ├─ └─ mod.rs
├─ ├─ ├─ ├─ session // Session middleware examples
├─ ├─ ├─ ├─ ├─ flash_messages.rs
├─ ├─ ├─ ├─ ├─ mod.rs
├─ ├─ ├─ ├─ ├─ session_middleware.rs
├─ ├─ ├─ ├─ └─ validate_session.rs
├─ ├─ ├─ └─ main.rs
├─ ├─ └─ Cargo.toml
├─ ├─ cli // AstroX project runner
├─ ├─ ├─ cmds
├─ ├─ ├─ ├─ tests
├─ ├─ ├─ ├─ ├─ cmd_list_test.rs
├─ ├─ ├─ ├─ ├─ interactive_test.rs
├─ ├─ ├─ ├─ └─ mod.rs
├─ ├─ ├─ ├─ cmd_list.rs
├─ ├─ ├─ ├─ execute_cmd.rs
├─ ├─ ├─ ├─ interactive.rs
├─ ├─ ├─ └─ mod.rs
├─ ├─ ├─ config
├─ ├─ ├─ ├─ tests
├─ ├─ ├─ ├─ ├─ get_config_test.rs
├─ ├─ ├─ ├─ └─ mod.rs
├─ ├─ ├─ ├─ collect_args.rs
├─ ├─ ├─ ├─ create_dotenv.rs
├─ ├─ ├─ ├─ get_config.rs
├─ ├─ ├─ ├─ mod.rs
├─ ├─ ├─ └─ toml.rs
├─ ├─ ├─ development
├─ ├─ ├─ ├─ mod.rs
├─ ├─ ├─ └─ start_development.rs
├─ ├─ ├─ pre_run
├─ ├─ ├─ ├─ cargo
├─ ├─ ├─ ├─ ├─ checks.rs
├─ ├─ ├─ ├─ ├─ mod.rs
├─ ├─ ├─ ├─ └─ validate.rs
├─ ├─ ├─ ├─ npm
├─ ├─ ├─ ├─ ├─ checks.rs
├─ ├─ ├─ ├─ ├─ mod.rs
├─ ├─ ├─ ├─ └─ validate.rs
├─ ├─ ├─ ├─ utils
├─ ├─ ├─ ├─ ├─ check_semver.rs
├─ ├─ ├─ ├─ ├─ git_hooks.rs
├─ ├─ ├─ ├─ └─ mod.rs
├─ ├─ ├─ ├─ execute.rs
├─ ├─ ├─ ├─ mod.rs
├─ ├─ ├─ └─ system_checks.rs
├─ ├─ ├─ production
├─ ├─ ├─ ├─ build_production.rs
├─ ├─ ├─ ├─ mod.rs
├─ ├─ ├─ └─ start_production.rs
├─ ├─ ├─ tests
├─ ├─ ├─ ├─ execute.rs
├─ ├─ ├─ └─ mod.rs
├─ ├─ ├─ utils
├─ ├─ ├─ ├─ mod.rs
├─ ├─ ├─ └─ terminal.rs
├─ ├─ └─ mod.rs
├─ ├─ frontend // Astro.Build project
├─ ├─ ├─ .astro
├─ ├─ ├─ └─ settings.json
├─ ├─ ├─ public
├─ ├─ ├─ ├─ astroStation.jpeg
├─ ├─ ├─ ├─ bgAstro.png
├─ ├─ ├─ ├─ bgPattern.png
├─ ├─ ├─ ├─ favicon.svg
├─ ├─ ├─ ├─ hero.jpeg
├─ ├─ ├─ └─ herobc.jpeg
├─ ├─ ├─ src
├─ ├─ ├─ ├─ axiosInstance
├─ ├─ ├─ ├─ ├─ axiosBackendInstance.test.ts
├─ ├─ ├─ ├─ └─ axiosBackendInstance.ts
├─ ├─ ├─ ├─ components
├─ ├─ ├─ ├─ ├─ navbar
├─ ├─ ├─ ├─ ├─ ├─ Navbar.astro
├─ ├─ ├─ ├─ ├─ ├─ Navbar.test.ts
├─ ├─ ├─ ├─ ├─ ├─ NavbarItem.astro
├─ ├─ ├─ ├─ ├─ └─ NavbarItem.test.ts
├─ ├─ ├─ ├─ ├─ spaceX
├─ ├─ ├─ ├─ ├─ ├─ spacex.svelte
├─ ├─ ├─ ├─ ├─ └─ spacex.test.ts
├─ ├─ ├─ ├─ ├─ zoomImage
├─ ├─ ├─ ├─ ├─ ├─ zoomImage.astro
├─ ├─ ├─ ├─ ├─ └─ zoomImage.test.ts
├─ ├─ ├─ ├─ ├─ Card.astro
├─ ├─ ├─ ├─ ├─ Footer.astro
├─ ├─ ├─ ├─ ├─ Hero.astro
├─ ├─ ├─ ├─ └─ Section.astro
├─ ├─ ├─ ├─ layouts
├─ ├─ ├─ ├─ ├─ Layout.astro
├─ ├─ ├─ ├─ └─ Layout.test.ts
├─ ├─ ├─ ├─ pages
├─ ├─ ├─ ├─ ├─ auth
├─ ├─ ├─ ├─ ├─ └─ protected.astro
├─ ├─ ├─ ├─ ├─ 404.astro
├─ ├─ ├─ ├─ ├─ actix.astro
├─ ├─ ├─ ├─ ├─ astro.astro
├─ ├─ ├─ ├─ ├─ cli.astro
├─ ├─ ├─ ├─ └─ index.astro
├─ ├─ ├─ ├─ sections
├─ ├─ ├─ ├─ ├─ Home
├─ ├─ ├─ ├─ ├─ ├─ HomeClone.astro
├─ ├─ ├─ ├─ ├─ ├─ HomeMiddleLinks.astro
├─ ├─ ├─ ├─ ├─ └─ HomeSecondary.astro
├─ ├─ ├─ ├─ └─ imgs
├─ ├─ ├─ ├─ └─ ├─ actix.png
├─ ├─ ├─ ├─ └─ ├─ astro.jpeg
├─ ├─ ├─ ├─ └─ ├─ astro.png
├─ ├─ ├─ ├─ └─ ├─ astro2.jpeg
├─ ├─ ├─ ├─ └─ ├─ cli.png
├─ ├─ ├─ ├─ └─ └─ contact.jpeg
├─ ├─ ├─ ├─ svgs
├─ ├─ ├─ ├─ ├─ Actix.astro
├─ ├─ ├─ ├─ ├─ AstroIcon.astro
├─ ├─ ├─ ├─ ├─ Github.astro
├─ ├─ ├─ ├─ ├─ RustIcon.astro
├─ ├─ ├─ ├─ └─ Spaceout.astro
├─ ├─ ├─ ├─ tests
├─ ├─ ├─ ├─ └─ pages.test.ts
├─ ├─ ├─ └─ env.d.ts
├─ ├─ ├─ .eslintignore
├─ ├─ ├─ .eslintrc.cjs
├─ ├─ ├─ .gitignore
├─ ├─ ├─ .nvmrc
├─ ├─ ├─ astro.config.mjs
├─ ├─ ├─ package.json
├─ ├─ ├─ prettier.config.cjs
├─ ├─ ├─ README.md
├─ ├─ ├─ svelte.config.js
├─ ├─ ├─ tsconfig.json
├─ ├─ └─ vitest.config.ts
├─ └─ main.rs
├─ .gitignore
├─ .nvmrc
├─ Astrox.toml
├─ Cargo.toml
└─ readme.md
```### Demo
https://astrox.spaceout.pl