WebOffice is a personal cloud document workspace with multi-format editing support, OAuth2 login, and user-isolated object storage.
It is built with:
- Backend: Spring Boot 3 (Java 17), Apache POI, OCI Object Storage SDK
- Frontend: Next.js 16, React 19, TypeScript
- Dual OAuth2 login: Google and Discord
- JWT authentication flow for API access
- User-scoped file isolation in object storage
- Multi-format parsing and editing model
- HWP / HWPX
- DOCX / DOC
- XLSX / XLS
- PPTX
- Format-aware editor UI
- Text document canvas
- Spreadsheet grid editor
- Presentation slide navigator
- Dynamic ribbon UI by file type
- Debounced auto-save for editor updates
backend/ Spring Boot API (auth, storage, document parsing/save)
frontend/ Next.js app (dashboard, editor, ribbon UI)
- Java 17+
- Node.js 20+
- npm 10+
- OCI account and bucket (for storage features)
- OAuth app credentials (Google and/or Discord)
git clone https://github.com/minseo0388/weboffice.git
cd webofficeConfigure backend settings in backend/src/main/resources/application.yml.
Typical values:
- OAuth client IDs/secrets
- JWT secret
- OCI namespace/bucket/credentials
Run backend:
cd backend
./gradlew bootRunOn Windows PowerShell:
cd backend
.\gradlew.bat bootRunBackend default URL: http://localhost:8080
cd frontend
npm install
npm run devFrontend default URL: http://localhost:3000
Note: if port 3000 is already in use, Next.js may automatically switch to 3001.
- The frontend has an API rewrite for
/api/*to backendhttp://localhost:8080/api/*. - OAuth buttons on the landing page use
NEXT_PUBLIC_BACKEND_URLif provided.- If not set, default backend URL is
http://localhost:8080.
- If not set, default backend URL is
- To verify backend health quickly:
curl http://localhost:8080/api/documents/fontmapBackend:
cd backend
./gradlew clean build -x testFrontend:
cd frontend
npm run build- Core upload/list/download/delete flows are implemented.
- Multi-format parse/save pipeline is integrated.
- Editor surface supports format-specific rendering and ribbon controls.
- Some advanced collaborative/runtime features are still in progress.
Issues and PRs are welcome.
- Fork the repository
- Create a feature branch
- Commit your changes
- Open a pull request
MIT © minseo0388