This is the server for the Scrippt project. It is written in Rust and uses the Actix Web framework.
To get started, install Rust on Unix systems with
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shSanity check your Rust installation by running
$ rustc --version
rustc 1.67.1 (d5a82bbd2 2023-02-07)
$ rustup --version
rustup 1.25.2 (17db695f1 2023-02-01)For ease of development, install cargo-watch with the following command. This will allow you to run the server in dev mode, which will automatically restart the server when you make changes to the source code.
$ cargo install cargo-watch
...
$ cargo watch --version
cargo-watch 8.4.0 # make sure this is the version you getTo run the server, tests, and other tasks, we use cargo-make. Install it with the following command.
$ cargo install cargo-make
...
$ cargo make --version
cargo-make 0.36.6 # your version may be differentNow you can run the server in watch (dev) mode with
$ cargo make -p dev watchThis will fail because you need to create a secrets.env file in the root directory of the project. This file contains the environment variables that the server needs to run. Create a file called .env in the root directory of the project.
$ pwd
/path/to/scrippt
$ touch secrets.envNow add the following environment variables to the .env file:
SENDGRID_API_KEY=<API_KEY_HERE>
OPENAI_API_KEY=<API_KEY_HERE>
To get the OPENAI_API_KEY and the SENDGRID_API_KEY, please ask another member of the Scrippt team for these values.
Now running the server in dev mode as described above should work.
$ cargo make -p dev watch
[cargo-make] INFO - cargo make 0.36.6
[cargo-make] INFO - Calling cargo metadata to extract project info
[cargo-make] INFO - Cargo metadata done
[cargo-make] INFO - Project: server
[cargo-make] INFO - Build File: Makefile.toml
[cargo-make] INFO - Task: watch
[cargo-make] INFO - Profile: dev
[cargo-make] INFO - Running Task: legacy-migration
[cargo-make] INFO - Execute Command: "cargo" "watch" "-x" "run"
[Running 'cargo run']
Compiling server v0.1.0 (/home/santiagomed/scrippt/scrippt-server)
Finished dev [unoptimized + debuginfo] target(s) in 10.34s
Running `target/debug/server`
main.rs:53 [INFO] - Starting server on port 8080...
database.rs:32 [INFO] - Connected to MongoDB
builder.rs:200 [INFO] - starting 8 workers
server.rs:196 [INFO] - Actix runtime found; starting in Actix runtimeThis will also run print the logs to the console. The default log level is DEBUG.
For ease of use, we will use Docker to run MongoDB and Redis. To install Docker, follow the instructions here.
To run MongoDB and Redis on Docker, run the following commands:
$ docker compose -f docker-compose.dev.yml up -dThis will run MongoDB and Redis in the background.
Make sure that MongoDB and Redis are running by running the following commands:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b6533804070e redis:latest "docker-entrypoint.s…" 2 days ago Up 2 days 0.0.0.0:6379->6379/tcp scrippt-redis
92a3c262348b mongo:latest "docker-entrypoint.s…" 2 days ago Up 2 days 0.0.0.0:27017->27017/tcp scrippt-mongoYou can also open Docker Desktop to see the containers running.