Para was designed as a simple and modular backend framework for object persistence and retrieval. It helps you build applications faster by taking care of the backend. It works on three levels - objects are stored in a NoSQL data store or any old relational database, then automatically indexed by a search engine and finally, cached.
The name "pára" means "steam" in Bulgarian. And just like steam is used to power stuff, you can use Para to power your mobile or web application backend.
Para can be used in two ways - as the backbone of your JVM-based application or as a standalone API server with multiple applications and clients connecting to it.
See how Para compares to other open source backend frameworks.
- RESTful JSON API secured with Amazon's Signature 4 algorithm
- Database-agnostic, designed for scalable data stores (DynamoDB, Cassandra, MongoDB, etc.)
- Full-text search (Elasticsearch by default)
- Distributed object cache (Hazelcast by default)
- Multi-tenancy support - each app has its own table, index and cache
- IoT support and integration with AWS and Azure
- Flexible security based on Spring Security (Social login, JWT support, CSRF protection, etc.)
- Simple but effective resource permissions for client access control
- Robust constraint validation mechanism based on JSR-303 and Hibernate Validator
- Per-object control of persistence, index and cac 8000 he operations
- Modular design powered by Google Guice and support for plugins
- I18n utilities for translating language packs and working with currencies
- Standalone executable WAR with embedded Jetty
- Para Web Console - admin user interface
+----------------------------------------------------------+ | ____ ___ _ ____ ___ _ | | / __ \/ __` / ___/ __` / | | / /_/ / /_/ / / / /_/ / | | / .___/\__,_/_/ \__,_/ +-------------+ | /_/ | Persistence | +-------------------+ +-----------------+ +-------------+ | REST API | | Search | | Cache | +---------+---------+--+--------+--------+---+------+------+ | | | +---------+---------+ +--------+--------+ +------+------+ | Signed Requests | | Search Index +---+ Data Store | | and JWT Tokens | | (ElasticSearch) | | (Any) | +----+---------^----+ +-----------------+ +-------------+ | | +----v---------+-------------------------------------------+ | Clients : JavaScript, PHP, Java, C#, Android, iOS, etc. | +----------------------------------------------------------+
- Download the latest executable WAR
- Execute it with
java -jar para-X.Y.Z.war
- Call
curl localhost:8080/v1/_setup
to get the access and secret keys - Open Para Web Console or integrate with one of the API clients below.
Para can be compiled with JDK 6 and up, but we recommend running it on JDK 8+.
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=true
You can run Para as a standalone server by downloading the executable WAR and then:
$ java -jar para-X.Y.Z.war
The you can browse your objects through the Para Web Console console.paraio.org. Simply change the API endpoint to be your local server and connect your access keys. The admin interface is client-side only and your secret key is never sent over the the network. Instead, a JWT access token is generated locally and sent to the server on each request.
Alternatively, you can grab the WAR file and deploy it to your favorite servlet container.
You can also integrate Para with your project by adding it as a dependency. Para is hosted on Maven Central.
Here's the Maven snippet to include in your pom.xml
:
<dependency>
<groupId>com.erudika</groupId>
<artifactId>para-server</artifactId>
<version>1.21.1</version>
</dependency>
- Para CLI: para-cli
$ npm install -g para-cli
Use these client libraries to quickly integrate Para into your project:
- Java: para-client
- JavaScript / Node.js: para-client-js
- PHP: para-client-php
- C# / .NET: para-client-csharp
- Android: para-client-android
- Swift / iOS / OSX: para-client-ios
Use these DAO
implementations to connect to different databases:
- DynamoDB:
AWSDynamoDAO
(part of thepara-server
package) - MongoDB: para-dao-mongodb
- Cassandra: para-dao-cassandra
DAO
implementation for PostgreSQL, etc.- Server-side JavaScript support for implementing custom API resources
- Integrations with Google App Engine, Heroku, DigitalOcean
- GraphQL and/or (JSON API) schema support
- Swagger support
- Fork this repository and clone the fork to your machine
- Create a branch (
git checkout -b my-new-feature
) - Implement a new feature or fix a bug and add some tests
- Commit your changes (
git commit -am 'Added a new feature'
) - Push the branch to your fork on GitHub (
git push origin my-new-feature
) - Create new Pull Request from your fork
Please try to respect the code style of this project. To check your code, run it through the style checker:
mvn validate
For more information see CONTRIBUTING.md
We offer hosting and premium support at paraio.com where you can try Para online with a free developer account. Browse and manage your users and objects, do backups and edit permissions with a few clicks in the web console. By upgrading to a premium account you will be able to scale you projects up and down in seconds and manage multiple apps.