-
Notifications
You must be signed in to change notification settings - Fork 0
Appsmith
- Home
- Project Overview
- Features
- Installation
- Configuration
- Usage
- API Documentation
- Contributing
- License
- FAQ
- Troubleshooting
- Roadmap
- Contact
Welcome to the Appsmith Project wiki! This repository contains everything you need to understand, install, use, and contribute to the Appsmith-based application. Whether you're a developer, contributor, or end-user, you'll find valuable information here.
Appsmith is an open-source framework designed to build internal tools quickly and efficiently. It allows developers to create custom dashboards, admin panels, and other essential business applications with minimal effort.
- Efficiency: Reduce the time required to build internal tools.
- Flexibility: Provide a highly customizable platform to meet various business needs.
- Scalability: Ensure the application can grow with your organization's requirements.
- User-Friendly: Offer an intuitive interface for both developers and end-users.
- Frontend: React.js
- Backend: Node.js, Express.js
- Database: PostgreSQL
- API: RESTful APIs
- Authentication: JWT
- Deployment: Docker, Kubernetes
- Drag-and-Drop UI Builder: Easily design your application's interface without writing code.
- Connect to Any API or Database: Integrate with REST APIs, GraphQL, SQL/NoSQL databases, and more.
- Customizable Widgets: Utilize a wide range of pre-built widgets or create your own.
- Version Control: Track changes and collaborate seamlessly using Git.
- Role-Based Access Control: Manage user permissions and access levels effectively.
- Responsive Design: Ensure your application looks great on all devices.
- Real-Time Data Updates: Reflect live data changes instantly within your app.
Follow these steps to set up the Appsmith project locally.
- Node.js: Download and install Node.js
- npm: Comes with Node.js
- Docker: Download and install Docker
- Git: Download and install Git
git clone https://github.com/yourusername/appsmith-project.git
cd appsmith-project
npm install
Create a .env
file in the root directory and add the following variables:
PORT=8080
DB_HOST=localhost
DB_PORT=5432
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_NAME=appsmith_db
JWT_SECRET=your_jwt_secret
Ensure PostgreSQL is running and create the necessary database:
CREATE DATABASE appsmith_db;
npm start
The application should now be running at http://localhost:8080
.
Alternatively, you can use Docker to run the application:
docker-compose up --build
Configure your Appsmith project by modifying the .env
file located in the root directory. Below are the primary configuration options:
# Server Configuration
PORT=8080
# Database Configuration
DB_HOST=localhost
DB_PORT=5432
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_NAME=appsmith_db
# Authentication
JWT_SECRET=your_jwt_secret
# Other Configurations
- PORT: The port on which the application will run.
- DB_HOST: The hostname of your PostgreSQL database.
- DB_PORT: The port number for your PostgreSQL database.
- DB_USER: Your PostgreSQL username.
- DB_PASSWORD: Your PostgreSQL password.
- DB_NAME: The name of your PostgreSQL database.
- JWT_SECRET: A secret key for JWT authentication.
Once the application is up and running, follow these steps to use it effectively.
Open your web browser and navigate to http://localhost:8080
.
- Admin User: Use the default admin credentials or create a new admin account.
- Regular Users: Depending on your setup, users can sign up or be invited by an admin.
- Click on the "Create New Project" button.
- Enter the project name and description.
- Select the type of application you want to build.
- Drag-and-Drop Widgets: Use the sidebar to drag widgets onto the canvas.
- Configure Widgets: Click on a widget to configure its properties and data bindings.
- Preview: Use the preview mode to test your application in real-time.
- Navigate to the "Data Sources" section.
- Click on "Add New Data Source."
- Choose the type of data source (e.g., REST API, PostgreSQL).
- Enter the required connection details and test the connection.
- Save the data source for use in your application.
Once satisfied with your application:
- Navigate to the "Deploy" section.
- Choose your deployment method (e.g., Docker, Kubernetes).
- Follow the provided instructions to deploy your application to your desired environment.
This section provides detailed information about the APIs available in the Appsmith project. Use these APIs to integrate with other services or extend your application's functionality.
All APIs require authentication via JWT. Include the token in the Authorization
header:
Authorization: Bearer your_jwt_token
-
Login
POST /api/auth/login
Request Body:
{ "username": "your_username", "password": "your_password" }
Response:
{ "token": "jwt_token", "user": { "id": "user_id", "username": "your_username", "email": "your_email" } }
-
Register
POST /api/auth/register
Request Body:
{ "username": "new_username", "password": "new_password", "email": "user_email" }
Response:
{ "message": "User registered successfully." }
-
Get All Projects
GET /api/projects
Response:
[ { "id": "project_id", "name": "Project Name", "description": "Project Description", "createdAt": "timestamp", "updatedAt": "timestamp" }, ... ]
-
Create a New Project
POST /api/projects
Request Body:
{ "name": "New Project", "description": "Project Description" }
Response:
{ "id": "project_id", "name": "New Project", "description": "Project Description", "createdAt": "timestamp", "updatedAt": "timestamp" }
-
Get Project Details
GET /api/projects/{projectId}
Response:
{ "id": "project_id", "name": "Project Name", "description": "Project Description", "createdAt": "timestamp", "updatedAt": "timestamp" }
-
Update Project
PUT /api/projects/{projectId}
Request Body:
{ "name": "Updated Project Name", "description": "Updated Description" }
Response:
{ "id": "project_id", "name": "Updated Project Name", "description": "Updated Description", "createdAt": "timestamp", "updatedAt": "timestamp" }
-
Delete Project
DELETE /api/projects/{projectId}
Response:
{ "message": "Project deleted successfully." }
-
Get All Widgets
GET /api/projects/{projectId}/widgets
Response:
[ { "id": "widget_id", "type": "Button", "properties": { ... }, "position": { ... }, "createdAt": "timestamp", "updatedAt": "timestamp" }, ... ]
-
Create a New Widget
POST /api/projects/{projectId}/widgets
Request Body:
{ "type": "Text", "properties": { "text": "Hello, World!", "color": "#000000" }, "position": { "x": 100, "y": 200 } }
Response:
{ "id": "widget_id", "type": "Text", "properties": { "text": "Hello, World!", "color": "#000000" }, "position": { "x": 100, "y": 200 }, "createdAt": "timestamp", "updatedAt": "timestamp" }
-
Get All Data Sources
GET /api/projects/{projectId}/datasources
Response:
[ { "id": "datasource_id", "type": "PostgreSQL", "connectionDetails": { ... }, "createdAt": "timestamp", "updatedAt": "timestamp" }, ... ]
-
Create a New Data Source
POST /api/projects/{projectId}/datasources
Request Body:
{ "type": "REST API", "connectionDetails": { "baseURL": "https://api.example.com", "headers": { "Authorization": "Bearer token" } } }
Response:
{ "id": "datasource_id", "type": "REST API", "connectionDetails": { "baseURL": "https://api.example.com", "headers": { "Authorization": "Bearer token" } }, "createdAt": "timestamp", "updatedAt": "timestamp" }
We welcome contributions from the community! To contribute to the Appsmith project, please follow the guidelines below.
-
Fork the Repository
Fork the repository to your GitHub account.
-
Clone the Fork
git clone https://github.com/yourusername/appsmith-project.git cd appsmith-project
-
Create a New Branch
git checkout -b feature/your-feature-name
-
Make Changes
Implement your feature or fix the bug.
-
Commit Your Changes
git commit -m "Add feature: your-feature-name"
-
Push to Your Fork
git push origin feature/your-feature-name
-
Create a Pull Request
Navigate to the original repository and create a pull request from your fork.
If you encounter any issues, please open an issue in the repository with relevant details.
Please adhere to our Code of Conduct to ensure a welcoming and respectful environment for all contributors.
This project is licensed under the MIT License.
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy...
For more details, refer to the LICENSE file.
Appsmith is an open-source framework that enables developers to build custom internal tools rapidly with minimal coding.
You can get support by opening an issue in the GitHub Issues section or by joining our community Slack/Discord.
Yes, all widgets are customizable. You can modify their properties directly in the UI builder or extend them by creating custom widgets.
Yes, you can access the demo at https://demo.yourapp.com.
Refer to the Installation and Configuration sections for deployment instructions using Docker or Kubernetes.
- Symptoms: The application fails to start, and you see errors in the terminal.
-
Solutions:
- Ensure all environment variables are correctly set.
- Verify that the database is running and accessible.
- Check if the required ports are not occupied by other services.
- Symptoms: Unable to connect to the PostgreSQL database.
-
Solutions:
- Verify the database credentials in the
.env
file. - Ensure PostgreSQL is running and listening on the correct port.
- Check for network issues or firewall restrictions.
- Verify the database credentials in the
- Symptoms: API endpoints return errors or do not respond.
-
Solutions:
- Ensure the server is running without errors.
- Check the network connectivity.
- Verify that the JWT token is correctly included in the
Authorization
header.
- Symptoms: The application UI is misaligned or widgets are not displaying as expected.
-
Solutions:
- Clear the browser cache and reload the page.
- Check for any CSS errors in the browser console.
- Ensure that all required dependencies are installed.
- Accessing Logs: Check the terminal where the application is running for real-time logs.
-
Log Files: If configured, refer to the log files stored in the
logs/
directory.
- Enhanced Widget Library: Introduce more customizable widgets.
- Advanced Authentication: Support for OAuth and Single Sign-On (SSO).
- Real-Time Collaboration: Enable multiple users to collaborate on the same project simultaneously.
- Integrations: Expand integrations with third-party services like Slack, GitHub, and more.
- Performance Improvements: Optimize the application's performance for larger datasets.
- Mobile Support: Develop a mobile version of the application.
- AI Integrations: Incorporate AI-driven features for smarter data handling.
- Localization: Support multiple languages for a global user base.
- Comprehensive Testing: Implement end-to-end testing to ensure reliability.
If you have suggestions or want to contribute to the roadmap, feel free to open an issue.
For any questions, suggestions, or feedback, please reach out to us:
- Email: [email protected]
- Slack: Join our Slack Community
- Twitter: @yourtwitterhandle
You can also open an issue on GitHub.