๐Web Setup
๐ Introduction
Welcome to the AppFlowy Web project! This project aims to bring the powerful features of AppFlowy to the web. Whether you're a developer looking to contribute or a user eager to try out the latest features, this guide will help you get started.
AppFlowy Web is built with the following technologies:
React: A JavaScript library for building user interfaces.
TypeScript: A typed superset of JavaScript that compiles to plain JavaScript.
Bun: A fast all-in-one JavaScript runtime.
Nginx: A high-performance web server.
Docker: A platform to develop, ship, and run applications in containers.
Let's dive in and get the project up and running! ๐
๐ Getting Started
Prerequisites
Before you begin, make sure you have the following installed on your system:
Node.js (v18.6.0) ๐ณ
pnpm (package manager) ๐ฆ
Jest (testing framework) ๐
Cypress (end-to-end testing) ๐งช
Clone the Repository
First, clone the repository to your local machine:
git clone https://github.com/AppFlowy-IO/AppFlowy-Web.gitInstall Dependencies
Install the required dependencies using pnpm:
## ensure you have pnpm installed, if not run the following command
# npm install -g [email protected]
pnpm installConfigure Environment Variables
Create a .env file in the root of the project and add the following environment variables:
AF_BASE_URL=http://localhost:8080
AF_GOTRUE_URL=http://localhost:9999
AF_WS_URL=ws://localhost:8080/ws/v1Start the Development Server
To start the development server, run the following command:
pnpm run devUsage
Create a
.envfile in the root of the project and add the following environment variables:
AF_WS_URL=wss://test.appflowy.cloud/ws/v1
AF_BASE_URL=https://beta.appflowy.cloud
AF_GOTRUE_URL=https://beta.appflowy.cloud/gotrueInstall CORS Unblock extension in your browser to bypass CORS issues. Chrome
Open http://localhost:3000 to view the application in your browser.
๐ Building for Production(Optional)
if you want to run the production build, use the following commands
pnpm run build
pnpm run startThis will start the application in development mode. Open http://localhost:3000 to view it in the browser.
๐งช Running Tests
Unit Tests
We use Jest for running unit tests. To run the tests, use the following command:
pnpm run test:unitThis will execute all the unit tests in the project and provide a summary of the results. โ
Components Tests
We use Cypress for end-to-end testing. To run the Cypress tests, use the following command:
pnpm run cypress:openThis will open the Cypress Test Runner where you can run your end-to-end tests. ๐งช
Alternatively, to run Cypress tests in the headless mode, use:
pnpm run test:componentsBoth commands will provide detailed test results and generate a code coverage report.
๐ Development Workflow
Linting
To maintain code quality, we use ESLint. To run the linter and fix any linting errors, use the following command:
pnpm run lint๐ Production Deployment
Our production deployment process is automated using GitHub Actions. The process involves:
Setting up an AWS EC2 instance: We use an EC2 instance to host the application.
Installing Docker and Docker Compose: Docker is installed on the AWS instance.
Configuring SSH Access: SSH access is set up with a user and password.
Preparing Project Configuration: We configure
Dockerfile,nginx.conf, andserver.cjsin the web project.Using GitHub Actions: We use the easingthemes/ssh-deploy@main action to deploy the project to the remote server.
The deployment steps include building the Docker image and running the Docker container with the necessary port mappings:
docker build -t appflowy-web-app .
docker rm -f appflowy-web-app || true
docker run -d -p 80:80 -p 443:443 --name appflowy-web-app appflowy-web-appThe Web server runs on Bun. For more details about Bun, please refer to the Bun documentation.
Last updated
Was this helpful?

