当前位置: 首页 > 软件库 > 大数据 > 数据查询 >

fullstack-starterkit

授权协议 MIT License
开发语言 Java
所属分类 大数据、 数据查询
软件类型 开源软件
地区 不详
投 递 者 欧阳楚
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

fullstack-starterkit

Motivation

Setting up boiler plates when starting new projects is tedious sometimes and I often found myself setting it up from scratch ��

Hence I made this starterkit following some of the best patterns and practices I learnt from some of the larger codebase and fantastic developers I've had a chance to work with ��

The main purpose of this repository is to provide a scalable "batteries included" full stack starterkit which follows good architecture patterns (might be opinionated) and code decoupling which becomes significant as the project grows or new developers are onboarded

Features

  • All in TypescriptBecause TypeScript is awesome, and types are important ��

  • GraphQL FirstThis starterkit is built with graphql first approach using the Apollo platform

  • Includes CICI is integral part of any project. This starterkit includes Github Actions by default. PR's for integration with any other providers are welcome ��

  • Testing FocusedThis project uses Jest for testing framework and comes with sample tests which are easy to extend

  • PrismaPrisma is the ORM being used for PostgreSQL. Feel free to submit a PR for any other ORM or drivers you'd like to see here ��

  • PWA SupportThis starterkit comes with out of the box PWA support

Please leave a as motivation if you liked the idea ��

�� Technologies Used

technologies

�� Contents

Video Overview

Here's a brief video overview of this project, hope it helps.

Full Stack Starterkit Overview

Big thanks to @mikestaub for mentoring me on the lot of the ideas you will come across in this repository. Checkout how he's changing social media with Peapods

�� Architecture

Backend

Here is the folder structure for backend, it is using yarn workspaces which helps us split our monorepo into packages such as DB, GraphQL. Which if required can be made into their own micro services.

backend
├── build
├── config
├── logs
├── packages
│   ├── db
│   │   └──prisma
│   ├── graphql
│   │   ├── api
│   │   ├── schema
│   │   └── types
│   └── utils
├── tests
│   ├── db
│   └── graphql
├── index.ts
└── package.json
DB

This workspace package contains the database abstractions. The database stack is PostgreSQL as relational database and Prisma as an ORM, read more about DB package here

GraphQL

The GraphQL package is organized as below:

graphql
├── schema
│   └── user                <---- some entity
│       ├── resolvers 
│       │     ├── types     <---- type resolvers
│       │     ├── queries   <---- query resolvers
│       │     └── mutations <---- mutation resolvers
│       ├── queries.graphql
│       ├── mutations.graphql
│       └── types.graphql
├── api
│   ├── queries             
│   └── mutations
├── types                   <---- graphql types
│   ├── schema           
│   └── resolvers
└── index.json

The schema splits each entity into it's own set of schema to modularize the codebase. The graphql package uses schema stitching and code generators to construct the whole schema.

It is organized so because if you choose to split graphql into it's own set of microservices later, it should be relatively easier to do so as this should be easy to integrate with Apollo Federation

Read more about GraphQL package here

Web

Here is the folder structure for web, it is a standard create-react-app using craco to override configs without ejecting

Web package uses Material UI heavily as it makes theming and customization very easy. PR's for any other UI kit are welcome ��

web
├── build
├── public
├── src
│   ├── assets
│   ├── config
│   ├── constants
│   ├── global
│   ├── tests
│   ├── layout     <---- controls, pure components
│   ├── theme      <---- theme config
│   ├── graphql
│   │   └── operations.tsx     <---- generated graphql operations and types
│   ├── pages
│   │   └──  Home   <---- page component
│   │        ├── components <---- page specific components
│   │        └── hooks      <---- page specific custom hooks   
│   └── utils
├── tests
│   ├── db
│   └── graphql
├── index.ts
└── package.json

�� Getting Started

Setting up environment variables

Before getting started, create .env files at both backend/.env as well as web/.env following the .env.template files located in those directories.

Install dependencies

I recommend using yarn instead of npm as this project heavily uses yarn workspaces

Install volta, which should automatically install correct node and yarn version when you checkout the repository (check the root package.json for config)

yarn

To install dependencies for web and backend automatically, a postinstall script has been added in the main package.json

Running backend

yarn start:backend

Make sure to use your own DATABASE_URL and not the default as provided in .env.template when developing your own project, as the demo database might be changed/deleted anytime

Running web

yarn start:web
Feel free to open a new issue if you're facing any problem ��

Codegen

This starterkit uses graphql-code-generator to codegen lot of things like TypeScript types, React Apollo hooks and queries, GraphQL Schema AST etc.

cd backend
yarn generate:graphql
Codegen is also executed in yarn postinstall hook

�� How to Contribute

Contributions are welcome as always, before submitting a new PR please make sure to open a newissue so community members can discuss.

Additionally you might find existing open issues which can helps with improvements.

This project follows standard code of conduct so that you can understand what actions will and will not be tolerated.

�� License

This project is MIT licensed, as found in the LICENSE

Built and maintained with �� by Karan

�� Hire Me | �� Donate

 相关资料
  • Fullstack GraphQL Simple Demo Application API built with Node + Express + GraphQL + Sequelize (supports MySQL, Postgres, Sqlite and MSSQL). WebApp built with React + Redux. Written in ES6 using Babel

  • A complete, serverless, full-stack application built on AWS Lambda, AWS HTTP API, Express.js, React and DynamoDB. Live Demo: https://www.serverless-fullstack-app.com Quick Start Install the latest ver

  • Vue fullstack template This project's goal is to help people create a reactive, realtime and user friendly backend system. �� Vue version This template only support vue2, because it use ElementUI as t

  • Apollo tutorial This is the fullstack app for the Apollo tutorial. �� File structure The app is split out into two folders: start: Starting point for the tutorial final: Final version From within the

  • Relay Fullstack is a Relay scaffolding application that aims to help you get up and running a project without worrying about integrating tools. It comes with many modern technologies; Relay, GraphQL,

  • Entria FullStack Playground Let's us know how can we help Read more about Playgrounds: https://medium.com/@sibelius/why-your-company-should-have-an-open-source-playground-4bb93068ce95 Getting Started

相关阅读

相关文章

相关问答

相关文档