🛠️ Survey Admin Panel
A React-based admin panel for managing surveys used by the Smart Survey SDK.
After registering, each developer receives a personal API Key that is used to initialize the SDK inside their Android app.
🌐 Live Admin Panel: https://survey-admin-panel.onrender.com
🔗 Backend Server (API): https://survey-sdk-server.onrender.com
With this panel you can:
- Create and manage surveys
- View end-user responses submitted from mobile apps
- Copy your personal API Key to use in the SDK initialization
✨ Features
-
✅ Authentication (JWT-based)
Developers must login to access protected pages and send requests to the backend. -
✅ Developer Registration + API Key
After signing up, the panel displays your personal API Key. -
✅ Survey Management (CRUD)
- Create new surveys
- Edit existing surveys
- Delete surveys
- View all your surveys in a dashboard
-
✅ Responses Viewer
- View all responses for a specific survey
- Search/filter responses (client-side)
📦 Installation
Requirements
- Node.js v22.17.0
- npm 11.4.2
- React 19.2.3
- react-dom 19.2.3
- react-router-dom 7.12.0
- react-scripts (CRA) 5.0.1
Prerequisites
- Node.js (LTS recommended)
- npm (comes with Node.js)
Install dependencies
npm install
Configure environment variables
Create a file named .env in the project root:
REACT_APP_API_BASE_URL=https://survey-sdk-server.onrender.com
REACT_APP_API_BASE_URLis the base URL of the backend server (the Survey SDK server).
Run locally
npm start
The app will be available at:
http://localhost:3000
🚀 Usage
Register and get your API Key
- Open the Admin Panel: https://survey-admin-panel.onrender.com
- Go to Create an account
- After successful registration, the panel shows your API Key
You will use this API Key inside the Android SDK:
SmartSurvey.init(
context = applicationContext,
baseUrl = "https://survey-sdk-server.onrender.com/",
apiKey = "YOUR_API_KEY_FROM_ADMIN_PANEL"
)
Login
- Login returns a JWT token
- The panel stores the JWT in
localStorage - All admin requests include:
Authorization: Bearer <JWT>
Main pages (routes)
| Page | Route | Description |
|---|---|---|
| Login | / |
Developer login |
| Register | /register |
Create account + receive API key |
| Dashboard | /dashboard |
View all surveys |
| Create Survey | /surveys/new |
Create a new survey |
| Edit Survey | /surveys/:surveyId/edit |
Update an existing survey |
| Survey Responses | /surveys/:surveyId/responses |
View responses for a survey |
Survey structure
A survey contains:
titlequestions[]
Each question includes:
type(e.g.TEXT,SINGLE_CHOICE)promptoptions[](only forSINGLE_CHOICE)
🖼️ Screenshots
Dashboard (All Surveys)

Create Survey

Survey Responses

🧩 API Endpoints Used (Frontend → Backend)
Authentication:
POST /api/auth/registerPOST /api/auth/login
Surveys:
GET /api/admin/surveysPOST /api/admin/surveysGET /api/admin/surveys/:surveyIdPUT /api/admin/surveys/:surveyIdDELETE /api/admin/surveys/:surveyId
Responses:
GET /api/admin/surveys/:surveyId/responses
🛠️ Technology
- React (Create React App)
- React Router
- Fetch API (HTTP requests)
- JWT Authentication
- CSS (custom styling)
👨💻 Author
Developed by Tomer Levy