first commit
This commit is contained in:
commit
c46490b8fd
195
README.md
Normal file
195
README.md
Normal file
@ -0,0 +1,195 @@
|
|||||||
|
# Frappe React Frontend
|
||||||
|
|
||||||
|
A modern React frontend application built with TypeScript, Vite, and TailwindCSS that connects to your existing Frappe backend.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- 🔐 **Authentication**: Seamless integration with Frappe's authentication system
|
||||||
|
- 🎨 **Modern UI**: Beautiful, responsive interface built with TailwindCSS
|
||||||
|
- 🚀 **Fast Development**: Hot module replacement with Vite
|
||||||
|
- 📱 **Mobile Ready**: Responsive design that works on all devices
|
||||||
|
- 🔌 **API Integration**: Comprehensive API client for Frappe backend
|
||||||
|
- 🛡️ **Type Safety**: Full TypeScript support
|
||||||
|
- 🧭 **Routing**: Client-side routing with React Router
|
||||||
|
|
||||||
|
## Tech Stack
|
||||||
|
|
||||||
|
- **Frontend**: React 19 + TypeScript + Vite
|
||||||
|
- **Styling**: TailwindCSS 4
|
||||||
|
- **Routing**: React Router DOM
|
||||||
|
- **HTTP Client**: Axios
|
||||||
|
- **Backend**: Frappe Framework (Python)
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
- Node.js 18+
|
||||||
|
- npm or yarn
|
||||||
|
- Running Frappe backend
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
1. Clone or download this project
|
||||||
|
2. Install dependencies:
|
||||||
|
```bash
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Configure environment variables:
|
||||||
|
```bash
|
||||||
|
cp .env.example .env
|
||||||
|
# Edit .env with your Frappe backend details
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Start development server:
|
||||||
|
```bash
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Open [http://localhost:3000](http://localhost:3000) in your browser
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
src/
|
||||||
|
├── api/
|
||||||
|
│ └── frappeClient.ts # API client for Frappe backend
|
||||||
|
├── pages/
|
||||||
|
│ ├── Login.tsx # Login page
|
||||||
|
│ ├── Dashboard.tsx # Dashboard page
|
||||||
|
│ └── UsersList.tsx # Users list page
|
||||||
|
├── components/ # Reusable React components
|
||||||
|
├── hooks/ # Custom React hooks
|
||||||
|
├── types/ # TypeScript type definitions
|
||||||
|
├── utils/ # Utility functions
|
||||||
|
├── App.tsx # Main app component
|
||||||
|
└── main.tsx # App entry point
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
### Environment Variables
|
||||||
|
|
||||||
|
Create a `.env` file in the root directory:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Frappe Backend Configuration
|
||||||
|
VITE_FRAPPE_BASE_URL=http://localhost:8000
|
||||||
|
VITE_FRAPPE_SITE_NAME=your_site_name
|
||||||
|
|
||||||
|
# Development Configuration
|
||||||
|
VITE_DEV_MODE=true
|
||||||
|
VITE_API_TIMEOUT=10000
|
||||||
|
```
|
||||||
|
|
||||||
|
### Frappe Backend Setup
|
||||||
|
|
||||||
|
1. Add the custom API endpoints to your Frappe app (see `python_api_examples.py`)
|
||||||
|
2. Restart your Frappe backend
|
||||||
|
3. Ensure CORS is configured for your frontend domain
|
||||||
|
|
||||||
|
## Available Scripts
|
||||||
|
|
||||||
|
- `npm run dev` - Start development server
|
||||||
|
- `npm run build` - Build for production
|
||||||
|
- `npm run preview` - Preview production build
|
||||||
|
- `npm run lint` - Run ESLint
|
||||||
|
|
||||||
|
## API Integration
|
||||||
|
|
||||||
|
The app includes a comprehensive API client (`frappeClient.ts`) that handles:
|
||||||
|
|
||||||
|
- Authentication (login/logout)
|
||||||
|
- DocType operations (CRUD)
|
||||||
|
- File uploads
|
||||||
|
- Error handling
|
||||||
|
- Session management
|
||||||
|
|
||||||
|
### Example Usage
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
import frappeAPI from './api/frappeClient';
|
||||||
|
|
||||||
|
// Login
|
||||||
|
const user = await frappeAPI.login({ usr: 'username', pwd: 'password' });
|
||||||
|
|
||||||
|
// Get records
|
||||||
|
const users = await frappeAPI.getDocTypeRecords('User');
|
||||||
|
|
||||||
|
// Create record
|
||||||
|
const newUser = await frappeAPI.createDocTypeRecord('User', {
|
||||||
|
email: 'user@example.com',
|
||||||
|
first_name: 'John',
|
||||||
|
last_name: 'Doe'
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
## Deployment
|
||||||
|
|
||||||
|
See [DEPLOYMENT_GUIDE.md](./DEPLOYMENT_GUIDE.md) for detailed deployment instructions.
|
||||||
|
|
||||||
|
### Quick Deployment
|
||||||
|
|
||||||
|
1. Build the app:
|
||||||
|
```bash
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Copy `dist/` contents to your Frappe app's `public/` folder
|
||||||
|
|
||||||
|
3. Restart Frappe:
|
||||||
|
```bash
|
||||||
|
bench restart
|
||||||
|
```
|
||||||
|
|
||||||
|
## Customization
|
||||||
|
|
||||||
|
### Adding New Pages
|
||||||
|
|
||||||
|
1. Create a new component in `src/pages/`
|
||||||
|
2. Add route in `src/App.tsx`
|
||||||
|
3. Update navigation as needed
|
||||||
|
|
||||||
|
### Styling
|
||||||
|
|
||||||
|
The app uses TailwindCSS. You can:
|
||||||
|
- Modify `tailwind.config.js` for custom themes
|
||||||
|
- Add custom CSS in `src/index.css`
|
||||||
|
- Use Tailwind utility classes in components
|
||||||
|
|
||||||
|
### API Endpoints
|
||||||
|
|
||||||
|
Add new API methods in `src/api/frappeClient.ts` and corresponding Python endpoints in your Frappe app.
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Common Issues
|
||||||
|
|
||||||
|
1. **CORS Errors**: Check Frappe CORS configuration
|
||||||
|
2. **Authentication Issues**: Verify session cookies
|
||||||
|
3. **API Not Found**: Ensure API files are deployed and Frappe is restarted
|
||||||
|
4. **Build Errors**: Check Node.js version compatibility
|
||||||
|
|
||||||
|
### Debug Mode
|
||||||
|
|
||||||
|
Enable debug logging by setting `VITE_DEV_MODE=true` in your `.env` file.
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
1. Fork the repository
|
||||||
|
2. Create a feature branch
|
||||||
|
3. Make your changes
|
||||||
|
4. Test thoroughly
|
||||||
|
5. Submit a pull request
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This project is licensed under the MIT License.
|
||||||
|
|
||||||
|
## Support
|
||||||
|
|
||||||
|
For issues and questions:
|
||||||
|
1. Check the [Deployment Guide](./DEPLOYMENT_GUIDE.md)
|
||||||
|
2. Review the [Frappe Documentation](https://frappeframework.com/docs)
|
||||||
|
3. Open an issue in this repository
|
||||||
Loading…
x
Reference in New Issue
Block a user