Booksly is a simple book management application designed to help users track their books seamlessly. The application features a robust backend system, an intuitive frontend interface, and shared utilities to ensure consistency and efficiency across the platform.
The project uses yarn workspaces to manage packages inside a single repository. This setup allows shared code between frontend and backend, centralized dependency management, and consistent build scripts.
- backend: Powers the application with a REST API for managing books, built with Node.js and Express.
- frontend: Provides a user-friendly interface for book management, built with React and TypeScript.
- shared: Contains shared utilities, types, and constants to ensure consistency and reuse across both the backend and frontend.
Make sure you have the following program installed on your dev system
- Clone the repository:
git clone https://github.com/ananta/booksly.git
cd booksly
yarn
yarn start:dev
yarn clean
Removes the output directories for shared, backend, and frontend workspaces.
yarn prebuild
Runs the clean
script to remove output directories before the build process.
yarn build
Builds the shared, backend, and frontend workspaces concurrently.
yarn start
Starts the backend and frontend workspaces concurrently in production mode.
Note: Before running the
frontend
orbackend
package, be sure to build theshared
package.
yarn start:dev
Starts the backend in development mode and the frontend workspaces concurrently.
yarn test
- REST API for managing books.
- Validation middleware using Joi.
- Controllers for handling book-related operations.
- Book management interface built with React.
- Form handling with react-hook-form and validation with zod.
- Toast notifications for user feedback using a custom useToast hook.
- Common types and constants used across the backend and frontend.
- Utility functions for shared logic.
Fork the repository.
Create a new branch git checkout -b feature-branch
.
Make your changes.
Commit your changes git commit -am 'Add new feature'
.
Push to the branch git push origin feature-branch
.
Create a new Pull Request.