Giter VIP home page Giter VIP logo

rapid's Introduction

banner (10)

Rapid

The intersection between developer experience and scalability

OSSRank

Example

You define a resolver in Rust and Rapid will automatically generate a type schema that enables full-stack type-safety from frontend to backend:

use rapid_web::actix::HttpResponse;
use rapid_web::{rapid_web_codegen::rapid_handler, request::RapidPath};
use serde::{Deserialize, Serialize};

// The name/alias for your route (you will use this to call it from the client)
pub const ROUTE_KEY: &str = "getUser";

#[derive(Serialize, Deserialize)]
pub struct User {
    pub id: i32,
    pub name: String,
    pub age: u8,
}

pub type RapidOutput = User;

#[rapid_handler]
pub async fn query(user_id: RapidPath<i32>) -> HttpResponse {
    let user = User {
        id: user_id.into_inner(),
        name: "John".to_string(),
        age: 20,
    };
    HttpResponse::Ok()
    .content_type("text/html; charset=utf-8")
    .body(user)
}

You can then make fully type-safe HTTP requests to your rust backend with the rapid-react bolt client:

import { createBoltClient } from '@rapid-web/react';
import { routes, type Handlers } from './bindings.ts';

// Init your bolt client that you can use throughout your entire app for making requests
export const bolt = createBoltClient<Handlers, typeof routes>(routes, {
	transport: 'http://localhost:8080',
});

const userId = 1;

const req = await bolt('getUser').get(routes.getUser, userId);

What is Rapid?

The complete fullstack toolkit for building advanced, scaleable, and highly efficient software. Rapid is a toolkit that enables developers to create fullstack applications built on React and Rust. Rapid focuses on scalability and performance without sacrificing developer experience.

Why Rapid?

Developers have been building entire fullstack applications with ONE single language since the beginning of software and technology (C, C++, Java, Ruby, PHP, nodejs, etc). As time has progressed, programming languages have began to specialize and become more directed towards solving hyper specific problems. However, developers have still preferred the single language stack -- hence the popularity of things like NodeJS.

Why is the single language stack so popular?

Developing applications with one language front-to-back means that engineers have the ability to share business logic across their entire development process, allowing them to iterate very quickly (additionally, things like hiring a development team are much easier and usually cheaper with a simpler tech stack). The downsides of this approach is that many languages (such as Javascript) were never meant to do absolutely everything -- this results in a situation where tools are used to solve problems they were never meant to solve.

Because of this, companies are often forced to move off of tooling as applications grow in scale. But what if we could use technologies at the beginning of the product development process that offers the great DX and simplicity of NodeJS without sacrificing scalability and performance?

Enter, Rapid -- a fullstack toolkit for building software applications with React and Rust!

How it works

Rapid is built to be very opinionated -- make less technical decisions, write more software, ship faster MVPs.

Rapid uses React and Rust as the foundation for its fullstack tooling. Do your heavy compute in Rust, render your user interface with React. Heavily integrated into Rapid is a feature rich CLI, allowing developers to create fullstack or backend applications with ease (rapid new --fullstack or rapid new --server).

Things like server-side rendering, hot-reload, Built-in UI components, authentication and much more come completely out-of-the-box with Rapid.

Rapid Libs

Rapid is built on multiple React and Rust libraries. View them below:

Backend

Frontend

Roadmap

MVP

  • Rapid Web - A web server framework (rapid new --server)
  • Rapid Ui -- a fully featured UI and CSS framework
  • React frontend lib for data fetching, auth, etc
  • Fullstack rapid apps with remix.run or nextjs (rapid new --remix or rapid new --nextjs)

Next

  • New mutation API for rapid-web
  • Easy deployments with rapid deploy (GCP, Docker, Cloudflare, Netlify)
  • rapid extract command for using rapid-web outside of a monorepo and maintaining full typesafety
  • React-query and SWR integrations for rapid-web
  • Icon library integrated into @Rapid/ui
  • Wasm powered server functions?!
  • Much more coming soon...

Maybe

  • A full featured react meta-framework built on Rapid (leveraging Rust and RSC)
  • Rapid ORM (fully async ORM inspired by Prisma and built for Rust)

Getting Started

Refer to our getting started documents below:


rapid's People

Contributors

darrenbaldwin07 avatar defiled avatar jayko001 avatar nyxkrage avatar paynejj avatar ryw 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

Watchers

 avatar  avatar  avatar

rapid's Issues

Rapid UI: Enhance Documentation and Readme

As a potential user of Rapid-UI, I want comprehensive, clear, and user-friendly documentation and a README file, enabling me to set up and start using the framework quickly and easily.

Features:

  • The documentation should include a clear step-by-step setup guide for new users.
  • The README file should provide a concise overview of the project, its features, and how to get started.
  • Both should mention any prerequisites or dependencies required for using the framework.
  • Where applicable, example code snippets and screenshots can be included to aid understanding.

Acceptance Criteria:

  • The documentation includes a clear, step-by-step setup guide.
  • The README provides a concise but comprehensive introduction to the project and a quick start guide.
  • Both the documentation and README highlight any prerequisites or dependencies.
  • Useful examples and screenshots are included where appropriate.
  • Update the documentation and README in the Rapid-UI GitHub repository.

Feature: Make Rapid remix deployment agnostic.

I decided to deploy my project myself. In that process I had to change the remix scaffold from netlify to express. That was pretty simple:

Steps

  1. Generate a remix template
  2. Copy app directory, rapid.toml , and cargo files to template
  3. Add the rapid packages to package.json.

I'm happy to implement an argument to the cli that allows rapid to generate with any remix template. Is that in the scope of the project?

Rapid UI: Link Component

As a user of Rapid UI, I want a Link component that supports multiple variants, allowing me to choose from a variety of styles and appearances for my website. This flexibility will empower me to create a unique user experience, fitting perfectly with the overall design theme of the website.

Features:

  • The Link component should support multiple variants.
  • It should have a 'style' prop that allows direct styling.
  • In the absence of a 'style' prop, the component should use the 'className' prop as a fallback.
  • Inspiration for this component can be drawn from Chakra UI's Link component (https://chakra-ui.com/docs/components/link/usage).

Acceptance Criteria:

  • The Link component supports multiple variants.
  • The Link component has a 'style' prop that allows direct styling.
  • In the absence of a 'style' prop, the component uses the 'className' prop as a fallback.
  • Add the Link component to Storybook

Rapid UI: Standardize Default Spacing and Sizing

As a user of Rapid-UI, I want a standardized default spacing and sizing across all components, facilitating a more consistent and predictable design experience.

Features:

  • All components should use 'medium' as the default spacing and sizing.
  • Users should have the option to either increase or decrease from this default 'medium' size.
  • Existing components that currently use 'large' as the default size should be updated, with the current 'large' redefined as 'medium', and a new 'large' size added.
  • The 'small' size option should be removed from all components.

Acceptance Criteria:

  • All components default to 'medium' size and allow size modification.
  • The current 'large' size has been redefined as 'medium', and a new 'large' size has been added where necessary.
  • 'Small' size has been removed from all components.
  • The sizing adjustments are reflected in the component display on Storybook.

Rapid UI: Box Component

As a user of Rapid-UI, I want a new Box component, enabling more flexibility and ease in the design process.

Features:

  • The Box component should accept classNames via a "styles" prop for custom styling.
  • It should render other components through an "as" prop to ensure flexibility and reusability.
  • Inspiration for this component can be drawn from Chakra UI's Box component (https://chakra-ui.com/docs/components/box/usage).

Acceptance Criteria:

  • Box component accepts and applies classNames through "styles" prop.
  • Box component successfully renders other components via "as" prop.
  • Add the Box component to Storybook

[rapid run] make cli not clear the terminal on each update

Running the dev server will completely clear the terminal whenever a file is updated, this makes it borderline impossible to use at the same time as running the next dev server with something like concurrently

Proposed change

Let the cli just print once what port and address its listening on, and then log whenever it detects a file change and when its done recompiling just like the next cli does

Rapid UI: Slider Component

As a user of Rapid-UI,I want a Slider component, to offer an intuitive way for users to select from a range of values.

Features:

  • The Slider component should support input of a range and return the user-selected value.
  • The component should allow for custom styling and theming to align with different application designs.
  • It should work in the same way that Chakra UI's Slider Component does.

Acceptance Criteria:

  • Slider component accepts and represents a value range correctly.
  • Slider component returns the user-selected value.
  • The component allows for custom styling and theming.
  • Add the Slider component to Storybook

Rapid UI: Checkbox Component

As a user of Rapid-UI, I want a new Checkbox component, to facilitate user input for true/false or multiple choice scenarios.

Features:

  • The Checkbox component should support the functionality of being checked and unchecked.
  • The component should allow for custom styling and theming to match various application designs.
  • It should support the ability to be disabled when required.

Acceptance Criteria:

  • Checkbox component correctly operates with checked and unchecked states.
  • Checkbox component allows for custom styling and theming.
  • Checkbox component can be disabled as needed.
  • Add the Checkbox component to Storybook

Rapid UI: Dark Mode Support

As a user of Rapid-UI, I want the framework to support Dark Mode, providing the option for users to switch to a darker color scheme, enhancing usability in low-light environments and offering design flexibility.

Features:

  • Rapid-UI should include a Dark Mode feature that can be toggled on or off.
  • The transition between light and dark modes should be smooth and not disrupt the user experience.
  • Inspiration for this feature can be drawn from Chakra UI's Dark Mode implementation.
  • Consideration should also be given to how Tailwind CSS handles Dark Mode with its built-in pseudo class, as detailed in their documentation.

Acceptance Criteria:

  • Dark Mode can be toggled on and off.
  • Transition between modes is smooth and seamless.
  • The Dark Mode implementation aligns with the rest of the Rapid-UI framework's design.
  • Add Dark Mode toggle to Storybook for demonstration and testing.

Rapid UI: Progress Bar Component

As a user of Rapid-UI, I want a new Progress Bar component, providing a clear and intuitive way to visually represent progression towards a goal or completion of a task.

Features:

  • The Progress Bar component should display progress in percentage form.
  • It should allow for custom styling and theming to align with various application designs.
  • The component should be designed very similarly to the Chakra UI's Progress Bar component (https://chakra-ui.com/docs/components/progress/usage) to ensure usability and aesthetic quality.

Acceptance Criteria:

  • Progress Bar component correctly displays progress in percentage form.
  • Progress Bar component allows for custom styling and theming.
  • The implementation aligns closely with Chakra UI's Progress Bar.
  • Add the Progress Bar component to Storybook for demonstration and testing.

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.