Git Product home page Git Product logo

site's Introduction

Site (2.0)

Site is an Application Data Platform, allowing the deployment of Application Programming Interfaces to serve state to applications.

Description

Site offers the following:

  • Bitemporal data storage (via XTDB)

  • User authentication (including OpenID)

  • Flexible access-control (RBAC, ABAC and policy-based)

  • Support for OpenAPI and GraphQL programmable APIs, with an embedded powerful language.

  • A built-in OAuth2 Authorization Server for issuing access tokens

  • Excellent conformance with standards (HTTP, OAuth2, OpenID) to maximise interoperability and minimize lock-in

On top of these features, Site has strong support for data governance. Every state of the database is accessible at any point in time. Every change to the database is auditable, so you can find out who made which change to the data, and when.

OAuth2

Site fully implements the OAuth2 Authorization Framework. Site assumes the roles of a Resource Server and Authorization Server.

Internal Developer Platforms

Site can be adopted as part of an Internal Developer Platform (IDP).

Status

Site 2.0 is not yet ready for evaluation outside of JUXT, and is in the process of maturing. We are developing 'in the open', please treat this repository in that spirit.

The previous 1.0 generation of Site is maintained at https://github.com/juxt/site.

Which types of projects might I use Site for?

  • You want to get started on a project quickly, and there are requirements for the project to serve data securely over an API.

  • You are building an Internal Developer Platform (IDP) and want to provide a solution to your developers to help them speed their development of APIs.

  • You have a dataset that you want to make available to consumers/customers via a secure OAuth2-compliant API, but don’t want to build a system from scratch.

In these cases, JUXT can provide expert guidance, consulting and development resources, if required. Contact [email protected] to schedule an appointment.

Testing

Run the tests with make test if you have make installed, or if not, with clojure -M:test -m kaocha.runner test.

Technical Description

Site is a standards-compliant web server, fulfilling the roles of an OAuth2 resource server and authorization server.

resource server

The server hosting the protected resources, capable of accepting and responding to protected resource requests using access tokens.

Resources are documents which represent a resource’s identity (URI), configuration and current state (which might be some data, image or other media). Site stores resources in a database.

A resource request is a standard web request to a URI (as part of an API, such as OpenAPI) or GraphQL request.

Requests contain an access-token, acquired from an authorization server:

authorization server

The server issuing access tokens to the client after successfully authenticating the resource owner and obtaining authorization.

Currently, the only supported database is JUXT’s immutable XTDB database. XTDB is a good fit for Site, since many of its features (such as document ids and references) map cleanly onto web concepts (such as URIs and links).

Features

Current development is still focussed on the technical feature set, as required to conform to the relevant standards and provide good interoperability.

Resource Server

  • Content Negotiation

  • Conditional Requests

  • Access Control (RBAC, ABAC or policy based)

  • GraphQL

Authorization Server

  • Client Registration

  • User Authentication (Basic, Login form, OpenID)

  • OAuth2 access token grants

Programming Site

Some types of resource, such as 'operations', may contain Site 'programs' that are executed when required. All resources are stored in the database, including all program code.

Currently, the only available programming language is SCI.

Consulting

Contact [email protected] if you would like help, we can provide professional consulting services for Site and/or XTDB.

License

The MIT License (MIT)

Copyright © 2020-2023 JUXT LTD.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

site's People

Contributors

malcolmsparks avatar armincerf avatar tggreene avatar reborg avatar l4e21 avatar cwchriswilliams avatar govindkrjoshi avatar refset avatar fiv0 avatar jsulmont avatar johantonelli avatar rhcarvalho avatar msladecek 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.