A simple prototype to test the core UI concept of Bookwiz.io - a 3-column writing interface similar to code editors. This version focuses only on the layout and basic interaction patterns without any backend functionality.
# Create Next.js project
npx create-next-app@latest bookwiz-prototype --typescript --tailwind --eslint --app
# Navigate to project
cd bookwiz-prototype
# Install additional dependencies (if using Monaco)
npm install @monaco-editor/react
# Start development server
npm run dev
bookwiz-prototype/
├── app/
│ ├── globals.css
│ ├── layout.tsx
│ └── page.tsx
├── components/
│ ├── FileExplorer.tsx
│ ├── Editor.tsx
│ ├── ChatPanel.tsx
│ └── Layout.tsx
└── lib/
└── mockData.ts
export default function Layout() {
return (
<div className="h-screen flex">
{/* File Explorer */}
<div className="w-64 bg-gray-100 border-r">
<FileExplorer />
</div>
{/* Editor */}
<div className="flex-1 flex flex-col">
<div className="h-12 bg-white border-b flex items-center px-4">
<span className="text-sm text-gray-600">chapter-1</span>
</div>
<div className="flex-1">
<Editor />
</div>
</div>
{/* Chat Panel */}
<div className="w-80 bg-gray-50 border-l">
<ChatPanel />
</div>
</div>
);
}
// lib/mockData.ts
export const mockProject = {
name: "My Novel",
files: [
{
id: 1,
name: "outline",
type: "file",
content: "# Story Outline\n\n## Chapter 1\n- Introduction of main character\n- Setting the scene\n\n## Chapter 2\n- First conflict..."
},
{
id: 2,
name: "chapters",
type: "folder",
expanded: true,
children: [
{
id: 3,
name: "chapter-1",
type: "file",
content: "# Chapter 1: The Beginning\n\nIt was a dark and stormy night..."
},
{
id: 4,
name: "chapter-2",
type: "file",
content: "# Chapter 2: The Plot Thickens\n\nThe next morning brought new challenges..."
}
]
},
{
id: 5,
name: "characters",
type: "folder",
children: [
{
id: 6,
name: "protagonist",
type: "file",
content: "# Main Character\n\n**Name:** Sarah Chen\n**Age:** 28\n**Background:** Software engineer..."
}
]
}
]
};
export const mockMessages = [
{
id: 1,
type: "user",
content: "Help me improve the dialogue in chapter 1"
},
{
id: 2,
type: "ai",
content: "I'd be happy to help improve the dialogue! Here are some suggestions for making it more natural and engaging..."
}
];