--- order: 100 toc: menu --- # Contributing ## Basic process - Fork the source code to your own repository - Modify source code - Submit pull request ## Installation and start-up ```bash # Replace the following git address with your own repo git clone https://github.com/nocobase/nocobase.git cd nocobase cp .env.example .env yarn install yarn bootstrap yarn build yarn nocobase init --import-demo yarn start ``` Open http://localhost:8000/ in your browser Involved in core code development, the project starts with a documentation page, not the application's login page. ## Main scripts ### Startup and reboot The above commands are only executed the first time, after that the project is restarted with ```bash yarn start ``` ### Reinstallation If you want to clear and reinstall ```bash ### If you want to import demo data, you can add --import-demo yarn nocobase init --import-demo # After reinstallation, you also need to restart yarn start ``` ### Build For integration testing or site-wide debugging, the following package changes need to be recompiled and repackaged. - actions - database - resourcer - server - test - utils In addition to the compilation issues, there are many details of the project build that remain unresolved. If you have some good suggestions, you are welcome to discuss them on [GitHub Discussions](https://github.com/nocobase/nocobase/discussions). ```bash # for all packages yarn build # for specific package yarn build # e.g. # yarn build database ``` ### Testing After upgrading v0.5, some tests have not been fixed yet, and the ci tests are not available yet. The code tests are not perfect yet, more tests will be added and improved in phases... ```bash # For all packages yarn test # For specific package yarn test packages/ ``` ### More scripts View [scripts](https://github.com/nocobase/nocobase/blob/ff4d432c9fc3faa38cd65ab6d4dad250da02c2fd/package.json#L7) of package.json ## Document revision and translation The documentation is in the [docs](https://github.com/nocobase/nocobase/tree/develop/docs) directory and follows Markdown syntax, defaults to English and ends with `.zh-CN.md` in Chinese, e.g. ```bash |- /docs/ |- index.md # English document |- index.zh-CN.md # Chinese document, when it is missing, the content of index.md is displayed ``` After modification, open http://localhost:8000/ in your browser to see the final effect. ## Back-end Most of the changes on the back-end can be verified by the test command. ```bash yarn test packages/ ``` Of course, if you are adding new content, you will need to write new tests. ``@nocobase/test`` provides ``mockDatabase`` and ``mockServer` for database and server testing, e.g. ```ts import { mockServer, MockServer } from '@nocobase/test'; describe('mock server', () => { let api: MockServer; beforeEach(() => { api = mockServer({ dataWrapping: false, }); api.actions({ list: async (ctx, next) => { ctx.body = [1, 2]; await next(); }, }); api.resource({ name: 'test', }); }); afterEach(async () => { return api.destroy(); }); it('agent.get', async () => { const response = await api.agent().get('/test'); expect(response.body).toEqual([1, 2]); }); it('agent.resource', async () => { const response = await api.agent().resource('test').list(); expect(response.body).toEqual([1, 2]); }); }); ``` ## Full-stack demo http://localhost:8000/develop To facilitate local debugging for developers, the full-stack demo is also an embedded demo, which can be opened full-screen by clicking on the new tab in the bottom left corner. ## Client components The component library is still being organized... Each component is independent, easy to debug and use. See the component list at http://localhost:8000/components ## Provide more examples Examples are still being compiled... Examples are available at http://localhost:8000/examples