Full-stack prototype for managing academic plans, reports and file uploads through a responsive dashboard.
The project explores how an academic planning workflow could be centralized in a web application. It currently includes a React frontend, an Express API, simulated authentication and in-memory data management.
Academic Planning Dashboard was designed to simplify the consultation and management of academic planning records.
Users can sign in to a simulated account, navigate through the dashboard and access planning history, reports and configuration sections.
The current version is a functional prototype. Database persistence, real authentication and OCR processing are planned improvements and are not yet implemented.
- Simulated login screen
- Responsive dashboard layout
- Sidebar navigation
- Academic planning history
- Reports and statistics interface
- System configuration page
- File upload interface
- Reusable React components
- Responsive styling with Tailwind CSS
- Express REST API
- Simulated session authentication
- Academic planning CRUD endpoints
- File upload endpoint
- Request error handling
- CORS configuration
- Protected prototype routes
| Area | Technologies |
|---|---|
| Frontend | React 18, Vite, Tailwind CSS |
| Backend | Node.js, Express.js |
| Communication | Fetch API, REST |
| Development | JavaScript, npm, Git |
academic-planning-dashboard/
├── src/
│ ├── components/
│ ├── pages/
│ ├── services/
│ ├── App.jsx
│ ├── main.jsx
│ └── index.css
├── server/
│ ├── controllers/
│ ├── middleware/
│ ├── routes/
│ ├── app.js
│ └── package.json
├── assets/
│ └── images/
│ └── dashboard-preview.png
├── index.html
├── package.json
├── vite.config.js
├── tailwind.config.js
├── .env.example
└── README.md
Install the following software before running the project:
- Node.js
- npm
- Git
Clone the repository:
git clone https://github.com/frannnkkyy/academic-planning-dashboard.gitOpen the project:
cd academic-planning-dashboardInstall the frontend dependencies:
npm installInstall the backend dependencies:
cd server
npm install
cd ..Create your local environment file from the example:
cp .env.example .envOnly add variables that are actually read by the project. Never commit .env or real credentials.
npm run devFrontend:
http://localhost:5173
Open another terminal:
cd server
npm run devAPI:
http://localhost:3001
Health endpoint:
http://localhost:3001/api/health
For more detailed installation instructions, read QUICK_START.md.
The following accounts are hard-coded for local demonstration purposes only:
| Role | Username | Password |
|---|---|---|
| Administrator | admin |
admin123 |
| Teacher | docente |
docente123 |
These are not production credentials. Authentication is currently simulated and must not be used in a production environment.
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/login |
Start a simulated session |
| POST | /api/auth/logout |
End the simulated session |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/planning |
Retrieve all planning records |
| GET | /api/planning/:id |
Retrieve one planning record |
| POST | /api/planning |
Create a planning record |
| PUT | /api/planning/:id |
Update a planning record |
| DELETE | /api/planning/:id |
Delete a planning record |
| POST | /api/planning/upload |
Upload a planning file |
This repository represents a prototype and is not production-ready.
- Data is stored in memory and is lost when the server restarts
- Authentication uses simulated session tokens
- User passwords are not stored in a database
- OCR processing is not implemented
- Uploaded documents are not processed automatically
- Automated tests are not currently included
- Production deployment has not been configured
- Add PostgreSQL or MySQL persistence
- Implement secure authentication with hashed passwords
- Add JWT validation and authorization
- Process documents with OCR
- Generate Excel reports
- Add input validation
- Add frontend and backend tests
- Document the API with Swagger/OpenAPI
- Create a Docker development environment
- Add a CI/CD workflow
- Deploy a public demonstration
This project helped me practice:
- Structuring a React application with reusable components
- Creating a responsive dashboard interface
- Connecting a frontend to an Express API
- Designing CRUD endpoints
- Handling loading and error states
- Separating frontend and backend responsibilities
- Documenting current limitations and future improvements
Carlos Constantino
- Portfolio: portafoliofrann.netlify.app
- LinkedIn: linkedin.com/in/fcoocarlos
- GitHub: github.com/frannnkkyy
This project is under active development and is intended for learning and portfolio demonstration.
