Skip to content

Quickstart

Para is a flexible backend service, created as an open-source project from the very beginning, in 2013. It was born out of our need to have a robust system which would allow us to persist objects easily to anything - RDBMS, NoSQL and in-memory databases. We needed a simple solution with an API which would scale well and provide a solid foundation for our future projects.

Here are some key features and benefits:

  • Para is multitenant - deploy and host multiple applications on the same server.
  • Para is stateless and schemaless - no sticky sessions or database schema configurations needed.
  • Para is database-agnostic - bring your own database
  • Para is resilient and scalable - the three-layer architecture stores data in more than one place.
  1. Download the latest executable JAR
  2. Create a configuration file para-application.conf file in the same directory as the JAR package.
  3. Start Para:
    Terminal window
    java -Dconfig.file=./para-application.conf -jar para-*.jar
  4. Install Para CLI with npm install -g para-cli
  5. Create a new dedicated app for your project and save the access keys:
    Terminal window
    # Run setup and set endpoint:
    # 'http://localhost:8080' or 'https://paraio.com'
    # Then enter the keys for the root app.
    # Keys are saved in para-application.conf
    $ para-cli setup
    $ para-cli new-app "myapp" --name "My App"

Choose one of the official Para clients, available for the following platforms:

The Java, JavaScript and Android Para client libraries have asynchronous versions of every API method. The rest of the client libraries only have synchronous methods. Here’s the matrix of all supported features, for each client:

ClientEmailsAsync methodsFiles *Websockets *
para-client-csharp❌❌❌❌
para-client-js❌✅❌❌
para-client-java✅✅❌❌
para-client-python❌❌❌❌
para-client-php❌❌❌❌
para-client-android❌✅❌❌
para-client-ios❌❌❌❌
* planned features

In certain environments like serverless (AWS Lambda, CloudFlare Workers, etc.) the environment restricts code to run on a single thread. In those cases, applications connecting to Para with a client must not use async functions or set para.executor_service_enabled = false.

Use the public health endpoint to confirm that Para is running. For authenticated object operations, use the Java client or follow the REST API authentication guide.

Terminal window
curl -i http://localhost:8080/v1/_health

Alternatively, you can use the Para Web Console to manage data, or integrate Para directly into your project with one of the API clients below.

Users are created either programmatically with paraClient.signIn(...) or with an API request to POST /v1/jwt_auth. See Sign in or Authentication sections for more details.

Para can be compiled with Java SDK 21 and up.

To compile it you’ll need Maven. Once you have it, just clone and build:

Terminal window
$ git clone https://github.com/erudika/para.git && cd para
$ mvn install -DskipTests=true

To generate the executable “uber-jar” run $ mvn package and it will be in ./para-jar/target/para-x.y.z-SNAPSHOT.jar. Two JAR files will be generated in total - the fat one is a bit bigger in size.

To run a local instance of Para for development, use:

Terminal window
$ mvn spring-boot:run