Giter VIP home page Giter VIP logo

ultralisp's Introduction

Ultralisp

What is this?

This is a fast-moving Common Lisp software distribution for those who want to publish his/her software today instead of waiting for the next month.

How to use it?

To use it, open your Lisp REPL and eval:

(ql-dist:install-dist "http://dist.ultralisp.org/" :prompt nil)

Pay attention, that Quicklisp's client does not support HTTPS yet. Vote for this issue on the GitHub, to increase priority for this feature.

How to host Ultralisp on my own server

Easy way

The easiest way to start a local Ultralisp server is to use docker-compose.

Checkout the repository:

git clone https://github.com/ultralisp/ultralisp
cd ultralisp

And run:

docker-compose up app

Harder way

Use a docker image. You may build it youself by runing make all or use an image from Docker Hub.

Then start a container like this:

docker run --rm \
           --name ultralisp \
           -p 80:80 \
           -p 4005:4005 \
           -v `pwd`:/app \
           -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
           -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
           -e MAILGUN_DOMAIN=mg.ultralisp.org \
           -e MAILGUN_API_KEY=key-xxxxxxxxxxxxx \
           -e USER_AGENT=xxxxxxxxxxxxx \
           40ants/ultralisp:latest

Hacking around

During development, it is better to start docker compose with the following arguments:

docker-compose up --build --abort-on-container-exit app

Most such commands are defined in the Lakefile. Use lake to run it like that:

lake devserver

Then you can connect to the web sever and worker using SLY. Just run in the Emacs a command sly-connect, choose "127.0.0.1" as a hostname and 14005 as a port for webserver or 14006 as a port to connect to the worker.

To work in the REPL, you will need a connection to a database. Establish it by running (ultralisp/db:connect-toplevel).

Running and creating database migrations

To generate a new database migration, run:

docker-compose rm --stop --force empty-postgres
docker-compose run --rm mito generate-migration

To rollup all migration to a dev database, run:

docker-compose run --rm mito migrate

If you want to experiment with database and then rollback the database's state then create a dump with such command:

docker-compose run --rm db-ops dump

And when you want to restore the database's state, ensure that app and worker containers are not running and run:

docker stop ultralisp_app ultralisp_worker
docker-compose run --rm db-ops restore

Running tests

Connect to the REPL and run:

(ql:quickload :ultralisp-test)
(setf rove:*enable-colors* nil)
(setf rove:*debug-on-error* t)
(asdf:test-system :ultralisp-test)

Hosting Ultralisp on your own server

This should a big chapter of documentation but for now there is only a sketch.

Uploading distribution to S3

By default, Ultralisp stores data locally and serves it from the /dist/ folder, like that: http://my-ultralisp.org/dist/. Hovewer, you may want to upload the data to Amazon S3 and to serve it through something like Cloudflare.

To do this, you need to set these environment variables for ultralisp app:

  • UPLOADER_TYPE=s3
  • S3_BUCKET=dist.my-ultralisp.org
  • AWS_ACCESS_KEY_ID=*****
  • AWS_SECRET_ACCESS_KEY=*****
  • BASE_URL=http://dist.my-ultralisp.org/ - a URL of the server which will serve the files. In simplest case, you would just point to S3 server like that: https://s3.amazonaws.com/dist.my-ultralisp.org/ but right now this will not work because Quicklisp does not support HTTPS :(

And you need to create a bucket on the S3.

How to create a bucket

Setup a proxy server

You need a proxy or CDN which is able to serve data via plain HTTP, because Quicklisp client does not support HTTPS yet. There is an issue on the GitHub, please, vote for it.

I use Cloudflare because it is free and easy to setup.

To serve files via Cloudflare, turn on "Static website hosting" of the bucket at AWS. Set the "index document" as "ultralisp.txt".

After that, your quicklisp distribution will be available as http://dist.ultralisp.org.s3-website-eu-west-1.amazonaws.com

ultralisp's People

Contributors

svetlyak40wt avatar vindarel avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.