mirror of
https://github.com/khoj-ai/khoj.git
synced 2024-12-19 10:57:45 +00:00
94 lines
2.3 KiB
Markdown
94 lines
2.3 KiB
Markdown
|
This is a [Next.js](https://nextjs.org/) project.
|
||
|
|
||
|
## Getting Started
|
||
|
|
||
|
First, install the dependencies:
|
||
|
|
||
|
```bash
|
||
|
yarn install
|
||
|
```
|
||
|
|
||
|
In case you run into any dependency linking issues, you can try running:
|
||
|
|
||
|
```bash
|
||
|
yarn add next
|
||
|
```
|
||
|
|
||
|
### Run the development server:
|
||
|
|
||
|
```bash
|
||
|
yarn dev
|
||
|
```
|
||
|
|
||
|
Make sure the `rewrites` in `next.config.mjs` are set up correctly for your environment. The rewrites are used to proxy requests to the API server.
|
||
|
|
||
|
```js
|
||
|
rewrites: async () => {
|
||
|
return [
|
||
|
{
|
||
|
source: '/api/:path*',
|
||
|
destination: 'http://localhost:42110/api/:path*',
|
||
|
},
|
||
|
];
|
||
|
},
|
||
|
```
|
||
|
|
||
|
The `destination` should be the URL of the API server.
|
||
|
|
||
|
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
||
|
|
||
|
You can start editing the page by modifying any of the `.tsx` pages. The page auto-updates as you edit the file.
|
||
|
|
||
|
### Testing built files
|
||
|
|
||
|
We've setup a utility command for building and serving the built files. This is useful for testing the production build locally.
|
||
|
|
||
|
1. Exporting code
|
||
|
To build the files once and serve them, run:
|
||
|
```bash
|
||
|
yarn export
|
||
|
```
|
||
|
|
||
|
If you're using Windows:
|
||
|
```bash
|
||
|
yarn windowsexport
|
||
|
```
|
||
|
|
||
|
|
||
|
2. Continuously building code
|
||
|
|
||
|
To keep building the files and serving them, run:
|
||
|
```bash
|
||
|
yarn watch
|
||
|
```
|
||
|
|
||
|
If you're using Windows:
|
||
|
```bash
|
||
|
yarn windowswatch
|
||
|
```
|
||
|
|
||
|
Now you should be able to load your custom pages from the Khoj app at http://localhost:42110/. To server any of the built files, you should update the routes in the `web_client.py` like so, where `new_file` is the new page you've added in this repo:
|
||
|
|
||
|
```python
|
||
|
@web_client.post("/new_route", response_class=FileResponse)
|
||
|
@requires(["authenticated"], redirect="login_page")
|
||
|
def index_post(request: Request):
|
||
|
|
||
|
return templates.TemplateResponse(
|
||
|
"new_file/index.html",
|
||
|
context={
|
||
|
"request": request,
|
||
|
},
|
||
|
)
|
||
|
```
|
||
|
|
||
|
## Learn More
|
||
|
|
||
|
To learn more about Next.js, take a look at the following resources:
|
||
|
|
||
|
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
|
||
|
- [Next.js App Router](https://nextjs.org/docs/app) - learn about the Next.js router.
|
||
|
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
|
||
|
|
||
|
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
|