open-notebook/docs/migration/streamlit-to-nextjs.md
Luis Novo b7e656a319
Version 1 (#160)
New front-end
Launch Chat API
Manage Sources
Enable re-embedding of all contents
Sources can be added without a notebook now
Improved settings
Enable model selector on all chats
Background processing for better experience
Dark mode
Improved Notes

Improved Docs: 
- Remove all Streamlit references from documentation
- Update deployment guides with React frontend setup
- Fix Docker environment variables format (SURREAL_URL, SURREAL_PASSWORD)
- Update docker image tag from :latest to :v1-latest
- Change navigation references (Settings → Models to just Models)
- Update development setup to include frontend npm commands
- Add MIGRATION.md guide for users upgrading from Streamlit
- Update quick-start guide with correct environment variables
- Add port 5055 documentation for API access
- Update project structure to reflect frontend/ directory
- Remove outdated source-chat documentation files
2025-10-18 12:46:22 -03:00

288 lines
7.1 KiB
Markdown

# Migration Guide: Next.js to Next.js Frontend
**Complete guide for upgrading from the React frontend to the new Next.js frontend.**
## Overview
Open Notebook has migrated from a Next.js-based user interface to a modern Next.js/React frontend. This upgrade provides:
- **Improved Performance**: Faster page loads and smoother interactions
- **Modern UI/UX**: Contemporary design with better responsiveness
- **Enhanced Features**: Better real-time updates and interactivity
- **Future-Ready**: Foundation for upcoming features like live updates
## What's Changing
### User Interface
- **Old**: Next.js-based UI (Python/Next.js)
- **New**: Next.js/React frontend (JavaScript/TypeScript)
### What Stays the Same
-**Same Port**: Still runs on port 8502
-**API Unchanged**: REST API remains on port 5055
-**Data Intact**: All your notebooks, sources, and notes are preserved
-**Configuration**: Same environment variables and settings
-**Features**: All existing functionality works the same way
## Upgrade Instructions
### For Docker Users (Recommended)
#### Single-Container Setup
1. **Stop the current container**:
```bash
docker compose down
```
2. **Pull the latest image**:
```bash
docker compose pull
```
3. **Start with the new version**:
```bash
docker compose up -d
```
4. **Verify it's running**:
- Open http://localhost:8502 in your browser
- You should see the new Next.js interface
#### Multi-Container Setup
Same steps as above - the process is identical.
### For Development Setup
If you're running Open Notebook from source:
1. **Pull the latest changes**:
```bash
git pull origin main
```
2. **Install frontend dependencies**:
```bash
cd frontend
npm install
npm run build
cd ..
```
3. **Start the application**:
```bash
make start-all
```
4. **Access the new interface**:
- Frontend: http://localhost:8502
- API: http://localhost:5055
## Verification Steps
After upgrading, verify everything works correctly:
1. **Check the UI loads**:
- Navigate to http://localhost:8502
- You should see a modern interface with a cleaner design
2. **Test your notebooks**:
- Open an existing notebook
- Verify sources are visible
- Check notes are accessible
- Try the chat functionality
3. **Test core features**:
- Create a new notebook
- Add a source (URL, file, or text)
- Generate a note
- Search your content
- Start a chat session
4. **Check API access** (if you use it):
- Navigate to http://localhost:5055/docs
- API documentation should be accessible
- Test any custom integrations
## Troubleshooting
### UI Doesn't Load
**Symptom**: Browser shows error or blank page at http://localhost:8502
**Solutions**:
1. Check container logs:
```bash
docker compose logs -f open_notebook
```
2. Verify container is running:
```bash
docker compose ps
```
3. Try restarting:
```bash
docker compose restart open_notebook
```
### Port Conflicts
**Symptom**: Error about port 8502 already in use
**Solutions**:
1. Check what's using the port:
```bash
# macOS/Linux
lsof -i :8502
# Windows
netstat -ano | findstr :8502
```
2. Stop the conflicting service or change Open Notebook's port:
```yaml
# In docker-compose.yml
ports:
- "8503:8502" # Maps host port 8503 to container port 8502
```
### Data Not Showing
**Symptom**: Notebooks or sources appear empty
**Solutions**:
1. Verify volume mounts are correct:
```bash
docker compose config
```
2. Check database is running (multi-container):
```bash
docker compose ps surrealdb
```
3. Verify data directories exist:
```bash
ls -la notebook_data/
ls -la surreal_data/
```
### API Errors
**Symptom**: Frontend shows "Cannot connect to API" or similar errors
**Solutions**:
1. Verify API is running:
```bash
curl http://localhost:5055/health
```
2. Check API logs:
```bash
docker compose logs -f open_notebook | grep api
```
3. Ensure environment variables are set:
```bash
docker compose exec open_notebook env | grep SURREAL
```
## Rollback Instructions
If you need to rollback to the Next.js version:
### Quick Rollback
1. **Stop current containers**:
```bash
docker compose down
```
2. **Use a specific older version** (replace with your previous version):
```bash
# In docker-compose.yml, change:
image: lfnovo/open_notebook:0.1.45-single # or whatever version you had
```
3. **Start the old version**:
```bash
docker compose up -d
```
### Finding Your Previous Version
Check your Docker images:
```bash
docker images | grep open_notebook
```
Or check the [releases page](https://github.com/lfnovo/open-notebook/releases) for version numbers.
## Frequently Asked Questions
### Do I need to backup before upgrading?
While the upgrade process doesn't modify your data, it's always a good practice to backup:
```bash
# Backup your data
tar -czf backup-$(date +%Y%m%d).tar.gz notebook_data surreal_data
```
### Will my bookmarks still work?
Yes! The new frontend still runs on port 8502, so all your bookmarks will continue to work.
### Do I need to reconfigure AI models?
No, all your model configurations are stored in the database and will work automatically with the new UI.
### Will my API integrations break?
No, the API is completely unchanged. All existing integrations will continue to work.
### What if I prefer the old React frontend?
You can rollback to any previous version using the instructions above. However, we recommend trying the new UI as it provides better performance and will receive all future updates.
### How do I report issues with the new UI?
Please report any issues on our [GitHub Issues page](https://github.com/lfnovo/open-notebook/issues) or join our [Discord server](https://discord.gg/37XJPXfz2w) for help.
## New Features in Next.js UI
While the migration maintains feature parity, the new frontend enables:
- **Better Performance**: Faster loading and navigation
- **Improved Responsiveness**: Better mobile and tablet support
- **Modern Design**: Cleaner, more intuitive interface
- **Foundation for Future**: Enables upcoming features like real-time collaboration
## Getting Help
If you encounter any issues during migration:
1. **Check the logs**: `docker compose logs -f`
2. **Review this guide**: Most issues are covered in Troubleshooting
3. **Join Discord**: [discord.gg/37XJPXfz2w](https://discord.gg/37XJPXfz2w)
4. **Open an issue**: [GitHub Issues](https://github.com/lfnovo/open-notebook/issues)
## Post-Migration Checklist
After successfully migrating, complete these steps:
- [ ] Verify all notebooks load correctly
- [ ] Test source addition and viewing
- [ ] Verify notes are accessible
- [ ] Test chat functionality
- [ ] Check search works as expected
- [ ] Verify podcast generation (if used)
- [ ] Test any custom API integrations
- [ ] Update any deployment documentation you maintain
- [ ] Remove old Docker images to free space: `docker image prune`
---
**Questions?** Join our [Discord community](https://discord.gg/37XJPXfz2w) or [open an issue](https://github.com/lfnovo/open-notebook/issues) on GitHub.