A lightweight PHP MVC application for managing boards and links.
Includes registration system, protected login, private dashboard and CRUD management of boards, links and tags.
This project demonstrates a simple yet structured approach to full-stack development using an MVC architecture.
- Features
- Technologies
- Requirements
- Installation
- Project structure
- Usage and system logic
- Bugs
- Future developments
- Contributing
- Author
- License
- User Registration & Login System (with session handling)
- Protected Dashboard accessible only to authenticated users
- Account, Board, Link and Tag Management (create, read, update, delete)
- Links keyword search and sorting filters
- Clean MVC structure for easy maintainability
- Dark/light UI theme saved on localstorage
- PHP 8+ (Backend - Core application logic)
- MySQL (Database - Data storage)
- HTML5 / TailwindCSS (Frontend rendering)
- Vanilla JavaScript (Basic interactivity)
- MVC Architecture (Model-View-Controller)
- Server: Apache/Nginx with PHP support
- PHP >= 8.0
- MySQL >= 5.7
- Web server (Apache recommended with
mod_rewriteenabled)
-
Clone the repository:
git clone https://github.com/travolgi/link-manager.git cd link-manager -
Import the
schema.sqlfile into your MySQL database. -
Configure the database connection inside
config/config.php.define('DB_HOST', 'localhost'); define('DB_NAME', 'link_manager'); define('DB_USER', 'your_user_db'); define('DB_PW', 'your_db_password'); -
Start a local PHP server -> Go to
http://localhost. -
Launch TailwindCss Cli from the terminal to make style changes
npx @tailwindcss/cli -i ./public/assets/css/input.css -o ./public/assets/css/style.css --watch
/ (root)
│ ├── app/
| | ├── config/
| | | ├── config.php # App constant
| | │ └── db.php # Database connection
| | │
| | ├── controllers/
| | │ ├── AuthController.php # Login/Registration Management
| | │ ├── BoardController.php # Board Management
| | │ ├── DashboardController.php # Dashboard Management
| | │ └── LinkController.php # Link Management
| | │
| | ├── core/
| | │ ├── Controller.php # Base controller
| | │ └── Model.php # Base model
| | │
| | ├── helpers/
| | │ ├── date_format.php # Format date
| | │ ├── hash_string.php # hash string like password
| | │ ├── Security.php # Csrf token for form
| | │ ├── slugify.php # Create slug from string
| | │ └── current_user_id.php # Get current user ID from session
| | │
| | ├── models/
| | │ ├── BoardModel.php # Board query
| | │ ├── LinkModel.php # Link query
| | │ └── UserModel.php # User/Auth query
| | │
| | └── views/
| | ├── partials/ # UI components
| | | ├── field_select_board.php
| | | ├── field_select_orderby.php
| | | ├── header.php
| | | ├── footer.php
| | | ├── link_filters.php # Filters component
| | | └── link_modal.php # Modal create link
| | ├── boards.php # Boards page
| | ├── change_password.php # Change password page
| | ├── dashboard.php # Dashboard page
| | ├── edit_board.php # Edit board page
| | ├── edit_link.php # Edit link page
| | ├── edit_profile.php # Edit account page
| | ├── layout.php # Main layout
| | ├── links.php # Links page
| | ├── login.php # Login page
| | ├── profile.php # Account page
| | └── register.php # Register page
| |
│ ├── node_modules/
| |
| └── public/
│ ├── assets/ # Static files
| | ├── css # css styles
| | ├── fonts
| | ├── imgs
| | └── js # js scripts
│ └── index.php # Router
│
├── .gitignore
├── LICENSE
├── package-lock.json
├── package.json
├── README.md
└── schema.sql # Database SQL schema
- Register a new account or log in with existing credentials.
- Access the dashboard to manage your account, links, tags and boards.
- Logout when finished.
UX processes and system logic - FigJam
Please feel free to create an issue if you see a bug or something unexpected in the app.
- Password reset functionality
- Link categorization and tags
- Async update (fetch) for updates/deletes without reloading.
- Drag & Drop frontend functionality
- Responsive design improvements
- Save dark/light UI theme on database
- REST API: endpoint construction
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/yourFeature) - Commit your Changes (
git commit -m 'Brief explanation of feature') - Push to the Branch (
git push origin feature/yourFeature) - Open a Pull Request
Developed by Travolgi
This project is licensed under the MIT license - see the LICENSE file for details.