# Contributing ## Setup your machine `alist` is written in [Go](https://golang.org/) and [React](https://reactjs.org/). Prerequisites: - [git](https://git-scm.com) - [Go 1.20+](https://golang.org/doc/install) - [gcc](https://gcc.gnu.org/) - [nodejs](https://nodejs.org/) Clone `alist` and `alist-web` anywhere: ```shell $ git clone https://github.com/alist-org/alist.git $ git clone --recurse-submodules https://github.com/alist-org/alist-web.git ``` You should switch to the `main` branch for development. ## Preview your change ### backend ```shell $ go run main.go ``` ### frontend ```shell $ pnpm dev ``` ## Add a new driver Copy `drivers/template` folder and rename it, and follow the comments in it. ## Create a commit Commit messages should be well formatted, and to make that "standardized". ### Commit Message Format Each commit message consists of a **header**, a **body** and a **footer**. The header has a special format that includes a **type**, a **scope** and a **subject**: ``` ():