Giter VIP home page Giter VIP logo

manifest's Introduction


manifest manifest

Effortless backends

npm CodeFactor Grade Discord Support us License MIT

Note

Manifest is in the Proof of Concept phase (PoC). We are currently developing the first stable version. We would love to have your feedback ! If something do not work as expected, please open a Github issue. For any other thing, let us know trough The Manifest Discord channel.

Manifest is the simplest BaaS (Backend As A Service) you will find.

Here is an example of a complete Manifest app:

# manifest/backend.yml
name: Healthcare application

entities:
  👩🏾‍⚕️ Doctor:
    properties:
      - fullName
      - avatar
      - { name: price, type: money, options: { currency: EUR } }
    belongsTo:
      - City

  🤒 Patient:
    properties:
      - fullName
      - { name: birthdate, type: date }
    belongsTo:
      - Doctor

  🌍 City:
    properties:
      - name

Key features

  • Instant complete backend with zero configuration
  • 🧠 Super-easy syntax to build with ease
  • 🛠️ Plug and play with your favorite frontend

Getting started

Simply run this terminal command to add Manifest:

npx add-manifest

Product roadmap

Our mission is to enable developers of all experience levels to create and share innovative solutions. As an open source product, we continuously improve Manifest through community collaboration. After our successful PoC, we are further developing the product with your feedback. Here are the upcoming features:

Feature Description Release date Status
OpenAPI Doc Instant live documentation for your REST API July 2024 ✅ Available
Auth Make any entity authenticatable and add rules for endpoints August 2024 🚧 In progress
Validation Custom validation for creating and updating items Q3 2024 📝 To specify
Many-to-many Advanced relationship management Q4 2024 📝 To specify
Hooks Trigger webhooks at specific events Q4 2024 📝 To specify
Media upload Allow file and image uploads with rules and resizing Q4 2024 📝 To specify

🆕 Suggest a new feature for the next versions

Community & Resources

  • Docs - Get started with Manifest
  • Discord - Come chat with the community
  • Github - Report bugs and share ideas to improve the product.

Contributors

Thanks to our first wonderful contributors !

manifest's People

Contributors

brunobuddy avatar dependabot[bot] avatar ismaelguerrib avatar itzmidinesh avatar jshapeau avatar sebconejo avatar substantialcattle5 avatar tjs002 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  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

manifest's Issues

add `is-clipped` class to <html> tag when any modal is open and when the menu is open on touch

Is your feature request related to a problem? Please describe.
To date, when the menu is open on touch versions or when a modal is open on any devis, the user still can scroll down. The app looks "broken".
Capture d’écran 2023-08-02 à 14 18 04

Describe the solution you'd like
When those elements are open, the html tag should get the class is-clipped.

  • Side menu on touch devices
  • Modal dialogs.

Additional context
Le CSS fonctionne déjà. Cela signifie que l'ajout de la classe devrait permettre à la fonctionnalité de fonctionner instantanément

Style types

  • Text
  • Number
  • Currency
  • Date
  • TextArea
  • Email
  • Boolean
  • Relation

Improve welcome page

Is your feature request related to a problem? Please describe.
The welcome page doesn't suggest nothing. It looks unnecessary

Describe the solution you'd like
The welcome page should help the developer on dev mode and the user on production.

  • If I'm developing, I could find links to the documentation
  • If I'm using the app, I could have the list of my entities.

Bug about seeding

Whenever i follow all the instructions in the documentation and arrive to the stage where i must execute npm run seed, i have this error

test-app\server\node_modules\typeorm\src\driver\mysql\MysqlQueryRunner.ts:222
new QueryFailedError(query, parameters, err),
^
QueryFailedError: ER_NO_SUCH_TABLE: Table 'case.notifications' doesn't exist
at Query. (C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\typeorm\src\driver\mysql\MysqlQueryRunner.ts:222:33)
at Query. (C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\mysql\lib\Connection.js:526:10)
at Query._callback (C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\mysql\lib\Connection.js:488:16)
at Query.Sequence.end (C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\mysql\lib\protocol\sequences\Sequence.js:83:24)
at Query.ErrorPacket (C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\mysql\lib\protocol\sequences\Query.js:92:8)
at Protocol._parsePacket (C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\mysql\lib\protocol\Protocol.js:291:23)
at Parser._parsePacket (C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\mysql\lib\protocol\Parser.js:433:10)
at Parser.write (C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\mysql\lib\protocol\Parser.js:43:10)
at Protocol.write (C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\mysql\lib\protocol\Protocol.js:38:16)
at Socket. (C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\mysql\lib\Connection.js:88:28) {
query: 'DELETE FROM notifications',
parameters: undefined,
driverError: Error: ER_NO_SUCH_TABLE: Table 'case.notifications' doesn't exist
at Query.Sequence._packetToError (C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14)
at Query.ErrorPacket (C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\mysql\lib\protocol\sequences\Query.js:79:18)
at Protocol._parsePacket (C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\mysql\lib\protocol\Protocol.js:291:23)
at Parser._parsePacket (C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\mysql\lib\protocol\Parser.js:433:10)
at Parser.write (C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\mysql\lib\protocol\Parser.js:43:10)
at Protocol.write (C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\mysql\lib\protocol\Protocol.js:38:16)
at Socket. (C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\mysql\lib\Connection.js:88:28)
at Socket. (C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\mysql\lib\Connection.js:526:10)
at Socket.emit (node:events:513:28)
at Socket.emit (node:domain:489:12)
--------------------
at Protocol._enqueue (C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\mysql\lib\protocol\Protocol.js:144:48)
at PoolConnection.query (C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\mysql\lib\Connection.js:198:25)
at C:\Users\LENOVO\Documents\Angular\Multivers\Test\Case\test-app\server\node_modules\typeorm\src\driver\mysql\MysqlQueryRunner.ts:194:36
at processTicksAndRejections (node:internal/process/task_queues:95:5) {
code: 'ER_NO_SUCH_TABLE',
errno: 1146,
sqlMessage: "Table 'case.notifications' doesn't exist",
sqlState: '42S02',
index: 0,
sql: 'DELETE FROM notifications'
},
code: 'ER_NO_SUCH_TABLE',
errno: 1146,
sqlMessage: "Table 'case.notifications' doesn't exist",
sqlState: '42S02',
index: 0,
sql: 'DELETE FROM notifications'
}

Pagination : set resultsPerPage value globally by default with a property on appConstants

Each index function on the service is calling the paginationService.paginate witch have the property resultsPerPage optional (and set by CASE at 20).

To improve the implementation experience, I suggest to do the following :

set the value of resultPerPage in each index function with a constant and global value

Capture d’écran 2022-09-08 à 11 33 49

which requires to import appConstant in each resourceService

resourceService.js

import { appConstants } from '../../../../shared/constants/app.constants'

and of course to add a new property to appConstant

app.constants.ts

  ITEMS_PER_PAGE: 20,

Image Size : set by default

When we want to display an image, we have to add the image size for the ressource.
It will be nice if at the creation of the ressource this object is set automatically.

Capture d’écran 2023-01-23 à 17 07 19

Mandatory Select field: This component should get the `is-danger` class when the user try to save a form without filling this input.

  • This is a feature request
  • This is a bug report
  • This request isn't a duplicate of an existing issue

What is the current behavior?
At the moment, the user can't understand why the form is not complete.

What is the expected or desired behavior?

The mandatory select input should get red by getting the class "is-danger" if it's not filled when registering the form.


Please describe your local environment:

case-app/angular-library version: 0.6.3

case-app/nest-library version: 0.3.0

case-app/schematics version: 0.3.1

Where did the bug happen? Development or remote servers?

Both environments

Is there a related Discourse, thread or were any utilized (please link them)?
The issue case-app/case-starter#138 was closed on may and was talking about the same behavior.

Other relevant information:

No

Tests > Add unit tests

Currently we don't have any unit tests on CASE. It will be nice if we had some to better protect our project from regressions or any bugs.

Non Functional Link

Describe the bug
Due to a spelling mistake the link given in the comments of entities was not working.

To Reproduce
Steps to reproduce the behavior:

  1. Create an entity
  2. Click on the link available in the comment
  3. See error

Expected behavior
The link should be functional

Screenshots
If applicable, add screenshots to help explain your problem.
The link redirects to this page ->
image

Environment (please give information about your environment):

  • OS:Pop OS
  • Browser firefox

Code snippets
If possible, show extracts from your code to help us better understand the issuse.

import { CaseEntity, Entity, Prop, PropType } from '@casejs/case'

@Entity({
  nameSingular: 'cat',
  namePlural: 'cats',
  propIdentifier: 'name',
  slug: 'cats',
})
export class Cat extends CaseEntity {
  @Prop({
    type: PropType.Text
  })
  name: string

  // Learn more about CASE Entities and how to add properties here: https://docs.case.app/properites
}

Bug: the app won't work well until I reinstall the node-modules

Describe the bug
After creating my applicatino, I have noticed 2 important errors:

  1. Each time I'm creating a resource, I have to waint 10 seconds before viewing this resource on the application. During those 10 seconds, I think something went wrong.
  2. Seeding the data generate an error (posted below).

Globally, the experience is really bad. To imrpove the experience I have to remove the node-modules and reinstall my app with npm install. Then, everything runs smoothlyCliquez pour utiliser cette solution

To Reproduce
Steps to reproduce the behavior:

  1. Create a new app : npx create-case-app my-super-case-app
  2. Add any entity : npm run case:entity truck
  3. Note the experience, rather disconcerting...
  4. run the seeder with npm run seed
  5. It should generate the following error

Capture d’écran 2023-08-11 à 10 24 19

Doc: Add property to an existing resource: the Option syntax to add a property mentioned in the doc is not the right one.

Actual behavior
Today, the documentation indicated how to add property to an existing resource with the following syntax:

cs generate property [name] --resource=[resourceName]

This syntax is wrong.

The good syntax is this one:

cs generate property [name] --resourceName=[resourceName]

Screenshot
Documentation
Capture d’écran 2023-04-21 à 12 24 25

the CLI feedback indicates the following options. We can see we should use --resourceName, not --resource
Capture d’écran 2023-04-21 à 12 29 32

On touch versions, close the menu when I click on a link

Describe the bug
On touch versions, when the side menu is open, if I click on a link, a open the related page but the side menu remains open. So I need to close it myself.

Expected behavior

  • Clicking on a link should close the menu while it brings me to the related page.
  • It should be possible to close the menu when clicking on a link (logo or menu item)

Capture d’écran 2023-07-25 à 11 26 27

Style enum yields: label and progress bar

There is 2 yields to style:

  • label
  • progress bar

Notes:

  • The label colors should not convey "positive" or "negative" feelings (as much as you can)
  • The progress bar yield is nullable, we have to consider the "unknown" value where all bullets are blank (first line in my screenshot).
  • You can add or remove enum elements in "cat.entity.ts" (Status enum) to check the progress bar with a different length

image

Add a spinner in "submit" buttons on create-edit views

When submitting a new item or editing it, we should implement add the "is-loading" class on the button while the request is pending.

It is very useful when we hook API calls on insert/update, as the response may take some time.

Add a set of 5 images on seeding images

When we create an image property and we see, the image appears as in the screenshot.

@SebConejo you can create a set of images and I will randomize the seed value to have different values. You will need to add 2 sizes for each image (list and detail) : packages/case/server/assets/seed/dummy-image-thumbnail.jpg and packages/case/server/assets/seed/dummy-image-large.jpg

You can create dummy-image1, dummy-image2, etc. and assign me the task

image

Bug: Login: When I connect to the app, I stay on the login page. I need to update myself the url to go to the dashboard

Describe the bug
When I connect to the app, I stay on the login page. I need to update myself the url to go to the dashboard

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'Login'
  2. connect with user1acase.app and case password
  3. You can note the page is reloaded
  4. Modify the url to go to cats page. You should land on the dashboard.

Expected behavior
When login to the app, we should enter to the dashboard.

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.