Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fairingrey/actix-realworld-example-app
[UNMAINTAINED] Implementation of the RealWorld backend API spec in Actix, Rust's powerful actor system and most fun web framework.
https://github.com/fairingrey/actix-realworld-example-app
actix actix-web backend backend-server realworld-backend rust web
Last synced: 2 days ago
JSON representation
[UNMAINTAINED] Implementation of the RealWorld backend API spec in Actix, Rust's powerful actor system and most fun web framework.
- Host: GitHub
- URL: https://github.com/fairingrey/actix-realworld-example-app
- Owner: fairingrey
- Created: 2019-03-05T06:25:57.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-06-14T16:10:10.000Z (over 1 year ago)
- Last Synced: 2024-08-03T09:12:28.768Z (3 months ago)
- Topics: actix, actix-web, backend, backend-server, realworld-backend, rust, web
- Language: Rust
- Homepage:
- Size: 413 KB
- Stars: 517
- Watchers: 15
- Forks: 70
- Open Issues: 24
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ![RealWorld Example App](logo.png)
> ### [Actix](https://actix.rs/) codebase containing real world examples (CRUD, auth, advanced patterns, etc) that adheres to the [RealWorld](https://github.com/gothinkster/realworld) spec and API.
❗ (2021/05/13) This codebase is currently unmaintained, and I am not interested in maintaining it. This relies on an old version of Actix -- developers who want to learn Actix should probably read the latest docs at the [Actix website](https://actix.rs/).
This codebase was created to demonstrate a fully fledged fullstack application built with [Actix](https://actix.rs/) including CRUD operations, authentication, routing, pagination, and more. CORS, however, is not yet added.
This implementation is not reviewed. See the [Contributing](#contributing) section below.
For more information on how this works with other frontends, head over to the [RealWorld](https://github.com/gothinkster/realworld) repo.
## How it works
This is an application written in [Rust](https://www.rust-lang.org/) that utilizes [Actix](https://actix.rs/) for developing the backend web service that powers the RealWorld application.
You can view a full list of crates being used in [Cargo.toml](./Cargo.toml), but here are some of the main ones of note:
* [Actix](https://actix.rs/) - a powerful Actor framework
* [Chrono](https://github.com/chronotope/chrono) - a Date and Time library for Rust
* [Failure](https://rust-lang-nursery.github.io/failure/) - a system for creating and managing errors in Rust
* [Futures](https://docs.rs/futures/0.1.25/futures/) - Zero-cost Futures in Rust
* [jsonwebtoken](https://github.com/Keats/jsonwebtoken) - Create and parses JWT (JSON Web Tokens)
* [libreauth](https://github.com/breard-r/libreauth) - a collection of tools for user authentication
* [Serde](https://serde.rs/) - a framework for serializing and deserializing Rust data structures efficiently and generically
* [Uuid](https://github.com/uuid-rs/uuid) - Generate and parse UUIDs
* [validator](https://github.com/Keats/validator) - Simple validation for Rust structs## Getting started
* Install [Rust](https://www.rust-lang.org/)
* Install [PostgreSQL](https://www.postgresql.org/) if you don't have it already.
* Install the [Diesel CLI](https://github.com/diesel-rs/diesel/tree/master/diesel_cli) with the `postgres` feature enabled.
* Clone this repo to a folder on your computer.
* Copy (`cp`) [.env.example](./.env.example) to `.env` within this directory, and change the environment variables accordingly to your system.
* Setup your database by running `diesel database setup`. Make sure it has completed successfully.
* Build this project with `cargo build`. You are welcome to compile with `--release` if you'd like.
* Run with `cargo run`.
* The API URL will be whatever the `BIND_ADDRESS` value is in `.env` with the `/api` path included e.g. `https://127.0.0.1:3000/api`. Set it as such in your REST client ([Postman](https://www.getpostman.com/), [Insomnia](https://insomnia.rest/), etc.), import the [postman collection](https://github.com/gothinkster/realworld/blob/master/api/Conduit.postman_collection.json) and start testing it out!## Contributing
Feel free to take a look at the current issues in this repo for anything that currently needs to be worked on.
You are also welcome to open a new issue if you see something is missing or could be improved upon.