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.
Download and run the Para server
Section titled “Download and run the Para server”- Download the latest executable JAR
- Create a configuration file
para-application.conffile in the same directory as the JAR package. - Start Para:
Terminal window java -Dconfig.file=./para-application.conf -jar para-*.jar - Install Para CLI with
npm install -g para-cli - 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"
Docker one-liner command:
docker run -it erudikaltd/para:latest_stablePara client libraries
Section titled “Para client libraries”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:
| Client | Emails | Async methods | Files * | Websockets * |
|---|---|---|---|---|
| para-client-csharp | ❌ | ❌ | ❌ | ❌ |
| para-client-js | ❌ | ✅ | ❌ | ❌ |
| para-client-java | ✅ | ✅ | ❌ | ❌ |
| para-client-python | ❌ | ❌ | ❌ | ❌ |
| para-client-php | ❌ | ❌ | ❌ | ❌ |
| para-client-android | ❌ | ✅ | ❌ | ❌ |
| para-client-ios | ❌ | ❌ | ❌ | ❌ |
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.
Make your first request
Section titled “Make your first request”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.
curl -i http://localhost:8080/v1/_healthParaClient client = new ParaClient(accessKey, secretKey);client.setEndpoint("http://localhost:8080");client.me();Replace accessKey and secretKey with the credentials saved during setup.
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.
Building Para from source
Section titled “Building Para from source”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:
$ git clone https://github.com/erudika/para.git && cd para$ mvn install -DskipTests=trueTo 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:
$ mvn spring-boot:run