# Tech Stacks

In these days, most of applications are on the web.\
With various frameworks, how do you pick for your need?

## Framework selection and transition

In the simple data collection/presentation, we want to the application ready in a short time.\
In a mission critical transaction, we may consider the performance.

What if you want to have a quick prototype to present to manager team, then deep dive into the right solution after planned?\
In here, I am going to have solution of how to do.\
Use bookstore model as example in some different kinds of projects.

![Tech Stacks](/files/-MS8s_AxpUIG9w-jHjok)

## Bookstore Projects in Github

* Fullstack MVC
  * [Django MVC](https://github.com/ccapeng/django-bookstore)
    * [Form validation in view class](/bookstores/django/topic-django-class-view-validation.md)
  * [Django REST Framework + React](https://github.com/ccapeng/bookstore_api)
    * [Serializer validation](/bookstores/django/topic-serializer-validation.md)
  * [Server Side React, login required](https://github.com/ccapeng/bookstore_pro)

    Django REST Framework + Fully Server Side React JS (No Next.js)

    Need to login to have both REST APIs and React JS to work.\
    No React JS expose to public.\
    [How this works?](/bookstores/topic-protect-react.md)
  * [Go & Beego](https://github.com/ccapeng/beego-bookstore)
  * [Laravel php](https://github.com/ccapeng/laravel_bookstore)
* REST
  * Object relationship model (ORM)
    * [Django Data model](/bookstores/django/topic-django-rest.md)
    * Flask w/SQLAlchemcy
    * Node.js w/typeORM
    * Node.js w/Adonis
  * Backend
    * [Python Django REST](https://github.com/ccapeng/bookstore_openapi)
    * [Python Flask REST](https://github.com/ccapeng/bookstore_flask_api)
    * [Node.js w/typeORM](https://github.com/ccapeng/typeorm-bookstore)
    * [Node.js w/Adonis](https://github.com/ccapeng/adonis-bookstore)
  * Frontend
    * [React Context](https://github.com/ccapeng/bookstore-context)
    * [React Hook Redux](https://github.com/ccapeng/bookstore-hook-redux)
    * [React Hook Redux TypeScript](https://github.com/ccapeng/bookstore-tx-redux)
    * [React with Jotai](https://github.com/ccapeng/bookstore-jotai)
      * [Migrate state management from Redux to Jotai](/bookstores/topic-migrate-redux-to-jotai.md)
* GraphQL
  * Backend [Django Graphene](https://github.com/ccapeng/bookstore_graphene).
  * Frontend
    * [React redux graphQL](https://github.com/ccapeng/bookstore-redux-graphql)
  * [Migrate from REST to GraphQL](/bookstores/topic-rest-to-graphql.md) &#x20;
* gRPC
  * Backend

    [Django gRPC](https://github.com/ccapeng/bookstore_grpc).
  * Frontend
    * [React redux grpc](https://github.com/ccapeng/bookstore-redux-grpc)
* Migration Options:
  * Migrate Your Prototype to Your Coding framework :
    * Once your have prototype for demo,

      [Use Open API data model](/bookstores/topic-use-open-api.md) to migrate.

      Django is battery included framework.

      It can be set up easy for the presentation.

      Once you have ideas to demo to team, you can start use the following to migrate.
  * [React context and redux difference](/bookstores/topic-react-context-and-redux-diff.md)
  * [How to handle cross origin?](/bookstores/topic-cross-origin.md)

## Other Topics -- more experiences to share

* [Best practice of programming](https://ccapeng.gitbook.io/programming/)
* [Graph](https://ccapeng.gitbook.io/graph/)
* [Namespace](https://ccapeng.gitbook.io/namespace/)
* [Context](https://ccapeng.gitbook.io/context/)

## Contact Me

`ccapeng@gmail.com` [`ccapeng.github.io`](https://ccapeng.github.io)

[View full document](https://ccapeng.gitbook.io/bookstores/)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ccapeng.gitbook.io/bookstores/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
