An always good-to-read, structured docs-form page is the best for your notes, but a boundless doodle surface is better for collaboration and creativity.
We make the shift and reshape easy, so you can shape the docs your way.
With affine, every page comes with 2 views, and you can access and edit fully functioned blocks at anywhere, in any form.
We really appreciate the idea of monday, airtable and notion database. They inspired what we think is right for task management. But we don't like the repeated works -- we don't want to set a todo easily with markdown but end up re-write it again in kanban or other databases.
With affine, every block group has infinite views, for you to keep your single source of truth.
## Sort your knowledge
A good, semantic knowledge base is made of reusable, linked elements. Affine is completely made on top of the idea of blocks. Blocks can be 2-way linked, duplicated, reused and synced between docs.
Rich-text paragraphs are blocks. Images are blocks. Todos are blocks and quotes are blocks. You can assemble blocks to form a bigger block, and you can even embed another as a block!
As semantic web lovers, we don't like the idea of folders that much, and we make everything easy to find.
## Create your story
We want your data always to be yours, and we don't want to make any sacrifice to your accessibility. Your data is always local-stored first, yet we support real-time collaboration on a peer-to-peer basis. We don't think "privacy-first" is a good excuse for not supporting modern web features.
You may take and insert pics on your phone, then edit them on your desktop, and share them with your collaborators.
Affine is fully built with web technologies so that consistency and accessibility are always guaranteed on Mac, Windows and Linux. The local file system support will be available when version 0.0.1beta is released.
User Installation
Please view the documentation for OS specific installation instructions.
Built With
- Typescript
- Rust
- React
Getting Started with development
Please view the documentation for OS specific development instructions
Once cloned, switch to the master branch and navigate to the folder by typing `cd AFFiNE` and then running the following commands:
```sh
# Install all project dependencies
npm i -g pnpm
pnpm i
# Start the project
pnpm start
open http://localhost:4200/
```
This project uses pnpm for package management and is built based on nx. It is recommended to install the [nx console](https://marketplace.visualstudio.com/items?itemName=nrwl.angular-console) plugin to create dependencies
**If it is development, you can add environment variables in the project directory .env.local file**
```
NODE_ENV=development
```
## Scripts
1. Create react dependency library: `pnpm run add:library`
2. Create react components: `pnpm run add:components`
3. Create a data source: `pnpm run add:datasource`
4. Unit testing: `pnpm test`
5. Compile specific components
-`pnpm build/test/lint `project name
- Project name reference workspace.json
6. Create react/node program: use nx console
7. If you need to use the git cz function, please install it globally first commitizen `npm install -g commitizen conventional-changelog conventional-changelog-cli`
## Contributing
- Generic functional components (such as ui components) are placed in `libs/components/common`
- components within common are not allowed to reference _components_ except utils and dependencies
- Common components can reference each other
- Business components are placed in `libs/components`
- The data source component is placed in `libs/datasource` - api request code, schema, etc. belong to the data source