A comprehensive React TypeScript frontend for the no-code application platform. This application provides a complete interface for building and managing database-driven applications without writing code.
- User registration and login
- JWT token-based authentication
- Protected routes and session management
- Create and manage projects
- Edit project details
- View project overview
- Drag-and-drop interface for creating database tables
- 11+ field types supported:
- Text (VARCHAR)
- Long Text (TEXT)
- Number (INT)
- Decimal (DECIMAL)
- Date
- Date Time
- Boolean
- Select/Dropdown
- Phone
- URL
- Field configuration: Set required fields, default values, constraints
- Real-time preview of table structure
- Full CRUD operations on table data
- Search and filter capabilities
- Pagination for large datasets
- Dynamic form generation based on table structure
- Validation based on field types and constraints
- Public views for end users (no authentication required)
- Read-only access to published data
- Clean, user-friendly interface for data browsing
- Material-UI design system
- Responsive design for all screen sizes
- Loading states and error handling
- Intuitive navigation and user experience
- React 18 with TypeScript
- Material-UI (MUI) for components and theming
- React Router for navigation
- React Hook Form + Yup for form validation
- Axios for API integration
- Vite for fast development and building
- Node.js 16+ and npm
- Backend API server running on
http://localhost:8080
-
Navigate to the frontend directory:
cd ncap-frontend -
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
Open your browser to
http://localhost:5173
The frontend is configured to connect to the backend API at http://localhost:8080. Make sure your Go backend server is running before using the frontend.
src/
├── components/
│ ├── Auth/ # Login and Registration
│ ├── Dashboard/ # Project management dashboard
│ ├── Project/ # Project detail views
│ ├── TableBuilder/ # Drag-and-drop table builder
│ │ ├── FieldTypes.tsx # Available field types
│ │ ├── TableCanvas.tsx # Drop zone and field configuration
│ │ └── TableBuilder.tsx # Main builder component
│ ├── DataManager/ # CRUD interface for table data
│ └── Public/ # Public data portal
├── contexts/ # React contexts (Auth)
├── services/ # API integration layer
├── types/ # TypeScript type definitions
└── App.tsx # Main app with routing
/dashboard- Project management/project/:id- Project details and table list/project/:id/table-builder- Visual table builder/project/:id/table/:tableName/data- Data management
/login- User login/register- User registration/public/project/:id- Public data portal
- Register/login to access the dashboard
- Click "Create Project" and fill in project details
- Navigate to your project to start building tables
- From project view, click "Create Table"
- Drag field types from the left panel to the canvas
- Configure each field (name, type, required, etc.)
- Save your table structure
- From project view, click "Manage Data" on any table
- Add, edit, or delete rows using the interface
- Use search and pagination for large datasets
- Share the public URL:
/public/project/:projectId - End users can browse data without authentication
- Read-only access ensures data security
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
@mui/material- UI componentsreact-router-dom- Routingaxios- HTTP clientreact-hook-form- Form managementyup- Validation schemas
The frontend integrates with all backend endpoints:
- Authentication (
/login,/register) - Projects (
/create-new-project,/retrieve-project-list,/edit-project) - Tables (
/create-table,/retrieve-table-list,/drop-table) - Data (
/insert-into-table,/retrieve-data-from-table,/delete-from-table)
- Follow TypeScript best practices
- Use Material-UI components consistently
- Implement proper error handling
- Add loading states for async operations
- Maintain responsive design principles
This project is part of the no-code platform suite.