Giter VIP home page Giter VIP logo

spica-engine / spica Goto Github PK

View Code? Open in Web Editor NEW
97.0 3.0 19.0 16.61 MB

Spica is a development engine to build fast & efficient applications.

Home Page: http://spicaengine.com

License: GNU Affero General Public License v3.0

TypeScript 83.83% JavaScript 0.29% HTML 8.28% Shell 0.42% Dockerfile 0.07% Starlark 3.40% Smarty 0.04% SCSS 3.51% PEG.js 0.16%
engine content-management-system single-page-applications nodejs mongodb angular cloud-functions database development-engine cms

spica's Introduction


Spica - development engine Build status

Spica is a full-fledged, free and open-source backend development platform. It aims to reduce all repetitive backend tasks and provide to fastest backend development process. Spica fulfills the needs of development among other things such as:

Modules Version Tests Used In Enterprise Project
Data Modeling Release
Realtime Database Release
Cloud Functions Release
Identity and Access Management Release
Storage (CDN) Release
Dashboards Release
Features
Auto-Generated REST API Release
WebHooks Release
Custom OAuth & SAML Beta
GraphQL Beta
ACL Rules Release
Asset System Beta
Monitoring Tools Beta
Identity Activity Monitoring Release
Instance Stats Alpha

Secondary Features

  • Inline image editing
  • Data history
  • Data localization
  • Event driven function triggers
  • Prebuilt Open-Source Assets & Plugins
  • Customizable back-office UI
  • API-first approach

Spica provides enterprise-grade backend features and customizable back-office UI for non-technical people.

Quick Start

Important: To run serve command, you must have Docker and NodeJs installed on your development environment.

# Install the CLI
npm install -g @spica/cli

# Start a fresh server
spica project start my-first-server

How It Works

We are trying to reduce development time for fast-paced projects and startups. Also we want to give a platform where the backend developers enjoy while developing robust projects. You can use Spica as a backend engine as well as a headless CMS.

To use Spica as a backend engine:

  1. Prepare your data models in Bucket Module, REST API and GraphQL API will be generated automatically
  2. Add rules to each bucket as an entry level security layer
  3. Create custom policy for your project user roles
  4. Apply your logic with cloud functions
  5. Add custom dashboards for the business managers

To use Spica as a Headless CMS:

  1. Prepare your data models in Bucket Module, REST API and GraphQL API will be generated automatically
  2. Place your inputs and customize your bucket views with a few clicks
  3. Create identities for your content editors
  4. Add policies to your identities so your content editors can't reach to any technical part.
  5. Add automations with cloud functions
  6. Add Webhooks if you want to trigger any other 3rd party integration such as Slack, Zapier

RoadMap

We are currently in public beta. This means, you can use every feature and 99% of features are stable. We used Spica for a few enterprise-grade projects which are serving millions of requests in a day.

We can tell that the current roadmap:

  1. Automate some settings with AI and reduce the complexity of the tool
  2. Better monitoring tools
  3. Adding new open-source assets such as Google Auth, Facebook Auth...
  4. Adding new ready-to-use full-project starter kits such as Marketplace backend, social network backend .etc
  5. New feature requests by our community are welcomed

Documentation

You can see full documentation on spicaengine/docs

Alternatively, you can check out the example which is already up and running

Click here and you will see Examples & Starters section in our official web page.

Community

Join us on Slack or Discord, feel free to request to join our private #development channel if you're planning to contribute.

Docker Packs

Package Status Description
spicaengine/api Docker Image Version (latest semver) Docker Image Size (latest semver) Docker Pulls API server of spica
spicaengine/spica Docker Image Version (latest semver) Docker Image Size (latest semver) Docker Pulls Dashboard for spica
spicaengine/mongoreplicationcontroller Docker Image Version (latest semver) Docker Image Size (latest semver) Docker Pulls Kubernetes controller for MongoDB replication

Libraries

Libraries Status Description Languages
@spica/cli npm (scoped) CLI for controlling the API. JS
@spica-devkit/database npm (scoped) Development package for interacting with the APIs database directly. JS
@spica-devkit/bucket npm (scoped) Development package for interacting with the Bucket APIs. JS
@spica-devkit/storage npm (scoped) Development package for the Storage module. JS
@spica-devkit/identity npm (scoped) Development package for the Identity module. JS

Contributing

Thanks for your interest in contributing! Read up on our guidelines for contributing.

Changelog

Learn about the latest improvements.

Licence

Spica is an open-source software licensed under the AGPL-3.0.

spica's People

Contributors

akhnos avatar davuttrg avatar dependabot[bot] avatar emre2345 avatar htuna07 avatar idriska avatar kenangsmv avatar parvineyvazov avatar thesayyn avatar tolgayigit avatar tthiscafer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

spica's Issues

Incorrect devkit bucket return type

Bucket data getAll method shows the wrong return type. It says the return type is IndexResult which is only possible if paginate param is given. Also setting paginate as false shows an error that says false is not a type of true.

Bug: request.body is undefined

In the documentation it says, function parses application/json by default although it does not.

Example;

export default function(request: triggers.http.Request, response: triggers.http.Response) {
  // A entry will appear in function logs.
  console.dir(request.body);
  // Send body as response right away
  response.send(request.body);
}

Cross Site Scripting on Bucket

Description

Stored attacks are those where the injected script is permanently stored on the target servers, such as in a database, in a message forum, visitor log, comment field, etc. The victim then retrieves the malicious script from the server when it requests the stored information. Stored XSS is also sometimes referred to as Persistent or Type-I XSS.

Steps to Reproduce

  • Create a new Bucket on your Spica Engine
  • Click "Add New" and enter the Title to your XSS Payload.

Proof

https://imgur.com/CWhfBJm

Impact

Can steal Cookie, Can run javascript code, etc

Cannot use images on pure docker environment.

Currently, the spica images are built for kubernetes environment;

So current spica images have quirks like;

  • Static baseUrl that set to "/spica/" in order to work in kubernetes.
  • Static apiUrl that set to "/api" in order to work in kubernetes.

These configurations should be configurable through env variables to be able to work in other environments.

The current workaround is replacing those lines with appropriate ones.

# Like we do in getting started docs
docker exec -it spica sed -i "s/\/spica\//\//g" /usr/share/nginx/html/index.html
docker exec -w /usr/share/nginx/html -it spica find . -type f -iname 'main-es*.js' -exec sed -i 's/\"\/api\"/\"http:\/\/localhost:4300\"/g' {} \;

spica bucket orm error

Hi everyone

I have installed spica, according to here, and started a project instance.

I have created a bucket and an API-key.

image

It's running:

qqqqqqqq@spicadev:~/spicaclient01$ netstat -tuanp|grep 4500
(Es konnten nicht alle Prozesse identifiziert werden; Informationen über
nicht-eigene Processe werden nicht angezeigt; Root kann sie anzeigen.)
tcp 0 0 0.0.0.0:4500 0.0.0.0:* LISTEN -
tcp6 0 0 :::4500 :::* LISTEN -

Spica client version:

qqqqqqqq@spicadev:~/spicaclient01$ cat package.json
{
"dependencies": {
"@spica/cli": "^0.9.15"
}
}

Now I'm trying to generate the ORM file, but it fails. I have tried different systems (local and remote) and different ways of assigning parameters (with / without "=" sign).

qqqqqqqq@spicadev:~/spicaclient01$ spica bucket orm --url=http://localhost:4500 --apikey=405gzo18kz5q4ykk
✖ Building interface and method definitions..
Cannot create property 'title' on string '!'
TypeError: Cannot create property 'title' on string '!'
at makeTitlesUnique (/usr/local/lib/node_modules/@spica/cli/src/commands/bucket/orm.js:249:26)
at Object.createFileContent (/usr/local/lib/node_modules/@spica/cli/src/commands/bucket/orm.js:65:19)
at Object.op (/usr/local/lib/node_modules/@spica/cli/src/commands/bucket/orm.js:25:36)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async Se.orm [as _action] (/usr/local/lib/node_modules/@spica/cli/src/commands/bucket/orm.js:13:5)
at async Se.run (/usr/local/lib/node_modules/@spica/cli/node_modules/@caporal/core/dist/index.js:1:27579)
at async Te._run (/usr/local/lib/node_modules/@spica/cli/node_modules/@caporal/core/dist/index.js:1:32257)

What can I do?

I have also tried other spical client commands, and they seem to work fine.

Like this one:

qqqqqqqq@spicadev:~/spicaclient01$ spica project ls
NAMESPACE AGE STATUS VERSION PORT DESCRIPTION
testspica01 52y 45d 14h 54m 17s Up 22 hours latest 0.0.0.0:4500

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.