2017-12-27 14:23:41 +02:00
< p align = "center" >
< img src = "https://user-images.githubusercontent.com/31465/34380645-bd67f474-eb0b-11e7-8d03-0151c1730654.png" height = "29" / >
< / p >
< p align = "center" >
2022-01-22 13:18:29 -08:00
< i > A fast, collaborative, knowledge base for your team built using React and Node.js.< br / > Try out Outline using our hosted version at < a href = "https://www.getoutline.com" > www.getoutline.com< / a > .< / i >
2017-12-27 14:23:41 +02:00
< br / >
2021-03-08 09:19:42 -08:00
< img width = "1640" alt = "screenshot" src = "https://user-images.githubusercontent.com/380914/110356468-26374600-7fef-11eb-9f6a-f2cc2c8c6590.png" >
2017-12-27 14:23:41 +02:00
< / p >
< p align = "center" >
2023-06-11 09:18:26 +03:00
< a href = "https://circleci.com/gh/outline/outline" rel = "nofollow" > < img src = "https://circleci.com/gh/outline/outline.svg?style=shield" > < / a >
2021-11-29 06:40:55 -08:00
< a href = "http://www.typescriptlang.org" rel = "nofollow" > < img src = "https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg" alt = "TypeScript" > < / a >
< a href = "https://github.com/prettier/prettier" > < img src = "https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat" alt = "Prettier" > < / a >
< a href = "https://github.com/styled-components/styled-components" > < img src = "https://img.shields.io/badge/style-%F0%9F%92%85%20styled--components-orange.svg" alt = "Styled Components" > < / a >
< a href = "https://translate.getoutline.com/project/outline" alt = "Localized" > < img src = "https://badges.crowdin.net/outline/localized.svg" > < / a >
2017-12-27 14:23:41 +02:00
< / p >
2023-03-16 18:49:56 -07:00
This is the source code that runs [**Outline** ](https://www.getoutline.com ) and all the associated services. If you want to use Outline then you don't need to run this code, we offer a hosted version of the app at [getoutline.com ](https://www.getoutline.com ). You can also find documentation on using Outline in [our guide ](https://docs.getoutline.com/s/guide ).
2017-12-27 14:23:41 +02:00
If you'd like to run your own copy of Outline or contribute to development then this is the place for you.
2017-10-30 00:13:05 -07:00
2021-02-06 21:49:07 -08:00
# Installation
2017-04-23 20:12:53 -07:00
2023-03-16 18:49:56 -07:00
Please see the [documentation ](https://docs.getoutline.com/s/hosting/ ) for running your own copy of Outline in a production configuration.
2017-10-30 00:13:05 -07:00
2022-01-22 13:18:29 -08:00
If you have questions or improvements for the docs please create a thread in [GitHub discussions ](https://github.com/outline/outline/discussions ).
2019-07-07 09:29:56 -07:00
2022-01-22 13:18:29 -08:00
# Development
2021-02-06 21:49:07 -08:00
2023-03-16 18:49:56 -07:00
There is a short guide for [setting up a development environment ](https://docs.getoutline.com/s/hosting/doc/local-development-5hEhFRXow7 ) if you wish to contribute changes, fixes, and improvements to Outline.
2020-09-14 19:29:55 -07:00
2022-01-22 13:18:29 -08:00
## Contributing
2020-12-26 01:23:55 +02:00
2021-02-06 21:49:07 -08:00
Outline is built and maintained by a small team – we'd love your help to fix bugs and add features!
2024-03-26 17:33:21 +01:00
Before submitting a pull request _please_ discuss with the core team by creating or commenting in an issue on [GitHub ](https://www.github.com/outline/outline/issues ) – we'd also love to hear from you in the [discussions ](https://www.github.com/outline/outline/discussions ). This way we can ensure that an approach is agreed on before code is written. This will result in a much higher likelihood of your code being accepted.
2021-02-06 21:49:07 -08:00
If you’ re looking for ways to get started, here's a list of ways to help us improve Outline:
2021-09-10 22:46:57 -07:00
- [Translation ](docs/TRANSLATION.md ) into other languages
- Issues with [`good first issue` ](https://github.com/outline/outline/labels/good%20first%20issue ) label
- Performance improvements, both on server and frontend
- Developer happiness and documentation
- Bugs and other issues listed on GitHub
2019-05-31 11:26:26 +08:00
2021-02-06 21:49:07 -08:00
## Architecture
2017-11-10 15:24:29 -08:00
2021-02-06 17:46:54 -08:00
If you're interested in contributing or learning more about the Outline codebase
2021-09-10 22:46:57 -07:00
please refer to the [architecture document ](docs/ARCHITECTURE.md ) first for a high level overview of how the application is put together.
2021-02-06 21:49:07 -08:00
2021-02-06 17:46:54 -08:00
## Debugging
2017-11-10 15:24:29 -08:00
2021-09-14 18:04:35 -07:00
In development Outline outputs simple logging to the console, prefixed by categories. In production it outputs JSON logs, these can be easily parsed by your preferred log ingestion pipeline.
2017-11-10 15:24:29 -08:00
2021-09-14 18:04:35 -07:00
HTTP logging is disabled by default, but can be enabled by setting the `DEBUG=http` environment variable.
2017-04-23 20:12:53 -07:00
2017-12-30 20:07:38 +02:00
## Tests
2019-07-07 09:29:56 -07:00
We aim to have sufficient test coverage for critical parts of the application and aren't aiming for 100% unit test coverage. All API endpoints and anything authentication related should be thoroughly tested.
2017-12-30 20:07:38 +02:00
2018-01-01 12:26:04 -08:00
To add new tests, write your tests with [Jest ](https://facebook.github.io/jest/ ) and add a file with `.test.js` extension next to the tested code.
2017-12-30 20:07:38 +02:00
```shell
# To run all tests
2020-11-11 16:58:45 -08:00
make test
2017-12-30 20:07:38 +02:00
2020-11-11 16:58:45 -08:00
# To run backend tests in watch mode
make watch
```
2021-09-10 22:46:57 -07:00
Once the test database is created with `make test` you may individually run
2020-11-11 16:58:45 -08:00
frontend and backend tests directly.
```shell
2017-12-30 20:07:38 +02:00
# To run backend tests
yarn test:server
2022-01-22 13:18:29 -08:00
# To run a specific backend test
yarn test:server myTestFile
2017-12-30 20:07:38 +02:00
# To run frontend tests
yarn test:app
```
2021-02-06 17:46:54 -08:00
## Migrations
Sequelize is used to create and run migrations, for example:
2022-01-22 13:18:29 -08:00
```shell
2021-02-06 17:46:54 -08:00
yarn sequelize migration:generate --name my-migration
yarn sequelize db:migrate
```
Or to run migrations on test database:
2022-01-22 13:18:29 -08:00
```shell
2021-02-06 17:46:54 -08:00
yarn sequelize db:migrate --env test
```
2017-10-30 00:13:05 -07:00
2023-08-27 17:16:42 -07:00
# Activity

# License
2017-10-30 00:13:05 -07:00
2021-02-06 17:46:54 -08:00
Outline is [BSL 1.1 licensed ](LICENSE ).