A full-stack web application for organizing and managing various types of resources (images, videos, text, links, etc.) with a beautiful stack-based UI.
Live Demo: Coming Soon
- β Stack-based UI: Organize resources in a visual stack
- β Checkbox Layer: Mark resources as completed
- β Editable Resources: Edit resource title and content anytime
- β Feedback System: Add notes/feedback before removing resources
- β Multi-media Support: Store text, links, images, videos, and more
- β Persistent Storage: MongoDB database integration
- β RESTful API: Complete backend API with Express.js
- β Modern UI: React + Vite with beautiful styling
- β Responsive Design: Works on desktop, tablet, and mobile
- React 18 - UI framework
- Vite - Build tool and dev server
- Axios - HTTP client for API calls
- CSS3 - Styling with modern features
- Node.js - JavaScript runtime
- Express.js - Web framework
- MongoDB - NoSQL database
- Mongoose - MongoDB ODM
- CORS - Cross-origin resource sharing
resource-stack/
βββ frontend/ # React + Vite application
β βββ src/
β β βββ components/ # React components
β β βββ App.jsx # Main App component
β β βββ main.jsx # Entry point
β β βββ index.css # Global styles
β βββ package.json
β βββ vite.config.js
βββ backend/ # Node.js + Express API
β βββ src/
β β βββ config/ # Database config
β β βββ models/ # Mongoose models
β β βββ routes/ # API routes
β β βββ controllers/# Route handlers
β βββ server.js # Express server
β βββ package.json
βββ README.md # This file
- Node.js (v14 or later)
- MongoDB (local installation or MongoDB Atlas)
- npm or yarn
-
Navigate to the backend directory:
cd backend -
Install dependencies:
npm install
-
Create a
.envfile based on.env.example:cp .env.example .env
-
Update
.envwith your MongoDB connection string:MONGODB_URI=mongodb://localhost:27017/resource-stack PORT=5000 NODE_ENV=development CORS_ORIGIN=http://localhost:5173
-
Start the backend server:
npm run dev
The server will run on
http://localhost:5000
-
Navigate to the frontend directory:
cd frontend -
Install dependencies:
npm install
-
Start the development server:
npm run dev
The application will be available at
http://localhost:5173
GET /resources
Response: Array of Resource objects
GET /resources/:id
Response: Resource object
POST /resources
Body: { title, content, isChecked?, feedback? }
Response: Created Resource object
PUT /resources/:id
Body: { title?, content?, feedback?, isChecked? }
Response: Updated Resource object
PATCH /resources/:id/check
Body: { isChecked: boolean }
Response: Updated Resource object
DELETE /resources/:id
Response: { message: "Resource deleted successfully" }
{
_id: ObjectId,
title: String, // Resource title (max 200 chars)
content: String, // Resource content (text, links, etc)
feedback: String, // Notes/feedback before deletion
isChecked: Boolean, // Completion status
createdAt: Date, // Creation timestamp
updatedAt: Date // Last update timestamp
}- App: Main application component, handles state and API communication
- ResourceStack: Container for all resources
- ResourceCard: Individual resource display with edit/delete actions
- AddResourceForm: Form to add new resources
- FeedbackModal: Modal for adding feedback before deletion
Backend (.env)
MONGODB_URI=mongodb://localhost:27017/resource-stack
PORT=5000
NODE_ENV=development
CORS_ORIGIN=http://localhost:5173Frontend (vite.config.js)
- API proxy is configured to forward requests to
http://localhost:5000
- Add Resource: Click "Add New Resource", fill in title and content, and click "Add Resource"
- Edit Resource: Click "Edit" on any resource card to modify its content
- Check Resource: Click the checkbox to mark a resource as completed
- Remove Resource: Click "Remove" to delete a resource. A modal will open for feedback
- Add Feedback: (Optional) Type feedback or notes before confirming deletion
cd frontend
npm run buildThis creates an optimized build in dist/ directory.
Set NODE_ENV=production and ensure MongoDB is properly configured for production use.
- Ensure MongoDB is running locally or check your connection string
- For MongoDB Atlas, use the full connection string with credentials
- Check that frontend URL matches
CORS_ORIGINin backend.env - Ensure both servers are running on the correct ports
- Verify backend server is running on port 5000
- Check network tab in browser DevTools for error details
This project is licensed under the MIT License. See LICENSE file for details.
Contributions are welcome! Feel free to:
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Open a Pull Request
For issues or questions, please open an issue on GitHub or contact the development team.
Happy resource organizing! π