Final Degree Project for the Computer Engineering Degree. University of Córdoba (UCO)
- Backend: Node.js, Express.js
- Frontend: React.js (Next.js)
- Database: MongoDB (MongoDB Atlas)
- Authentication: Passport.js (JWT)
- Version Control: Git
- Backend Deployment: Render
- Frontend Deployment: Vercel
-
backend/: Server codemodels/: Mongoose models for MongoDB (User, Device, SavedItem, Log, etc.)routes/: REST routes for users, devices, authentication, administration, images, etc.controllers/: Business logic controllers for each routemiddleware/: Custom middleware (e.g., file upload handling)config/: Configuration files (Passport authentication setup)utils/: Helper functions (authentication, data sanitization, device data handling)temp_uploads/: Temporary folder for uploaded files (not version-controlled)
-
frontend/portacloud/: Next.js client codeapp/: Main pages organized by routescomponents/: Reusable components (navbar, footer, modals)context/: React context for global authentication state managementpublic/: Public assets (icons, images)
- Node.js and npm installed
- MongoDB Atlas configured (connection string in backend
.env)
cd backend
npm i
node server.jsBackend runs by default at http://localhost:5000 (verify configuration).
cd frontend/portacloud
npm i
npm run dev -p 3000Frontend available at http://localhost:3000
- Backend: https://portacloud-backend.onrender.com
- Frontend: https://portacloud.vercel.app
- Database: MongoDB Atlas (cloud service)
- Secure user registration, login, and management using JWT and Passport
- User device management
- Cloud-based clipboard synchronization across devices
- Creation, editing, and deletion of synchronized content
- User and device administration (admin panel)
- Password recovery and reset
- Data backup and download
- Responsive and accessible UI with Next.js and React
- Global authentication and session state management
MONGO_URI: MongoDB Atlas connection URLJWT_SECRET: Secret key for JWT token signingPORT: Backend port (default: 5000)GMAIL_USER: Gmail account for password recoveryGMAIL_PASS: Application-specific password for the Gmail accountCLIENT_URL: Frontend URLENCRYPTION_SECRET_KEY: 32-character hex key for encryption
NEXT_PUBLIC_SERVER_IP: Backend URL
MongoDB database with these main collections:
- Users: User data, credentials, roles, and tokens
- Devices: User-associated devices for synchronization
- SavedItems: Saved clipboard items
- Logs: Action logs for auditing
- ContentRegistry: Synchronized content registry

