RecordStores.it is an open-source platform dedicated to mapping, promoting, and managing independent record stores in Italy.
The project was born as a community-driven initiative, with the goal of building a reliable, curated, and long-term sustainable archive, created together with music lovers, store owners, and contributors.
🌍 Official website: https://www.recordstores.it
- 📍 Interactive map of record stores
- 🏪 Detailed store profiles (description, images, opening hours, contacts)
- 👤 User system (contributors, store owners, admins)
- 🔐 Store claim system with domain email verification
- 🔔 Internal notification system
- ⭐ Favorites and user interactions
- 🛠 Administrative dashboard
- 🖼 Image gallery with ordering
- 🔗 Social links (Facebook, Instagram, YouTube, TikTok)
-
📅 Community-driven event proposals
-
🏬 Events linked to stores or custom venues
-
🖼 Optional event image upload (with default placeholder fallback)
-
⏳ Admin moderation workflow (pending / approved / rejected)
-
🔔 Automatic notifications:
- to admins when a new event is submitted
- to users when their event is approved or rejected
-
🧭 Smart filtering:
- Today
- Weekend
- This Month
- All Events
-
🏙 Dynamic city filter (auto-generated from available events)
-
🖱 Swiper-based responsive carousel for multi-event months
-
📖 Expandable descriptions with smooth animation
-
🔗 External event link support
- Backend: PHP 8.x (PDO, native sessions)
- Database: MySQL / MariaDB
- Frontend: Bootstrap 5, Vanilla JavaScript
- Maps: Leaflet
- Carousel: Swiper.js
- Rich Text Editor: TinyMCE
- Date Picker: Flatpickr
- Icons: Font Awesome
- Email: PHPMailer (SMTP abstraction)
- Auth: Session-based + OAuth (Google)
/
├── admin/ # Dashboard amministrativa
│ ├── dashboard.php
│ ├── events-pending.php
│ ├── stores-all.php
│ ├── users-list.php
│ └── ...
│
├── api/ # Backend API endpoints
│ ├── admin/ # API riservate admin
│ │ ├── event-status.php
│ │ └── dashboard-stats.php
│ │
│ ├── auth/ # Login, register, OAuth
│ ├── stores/ # CRUD negozi
│ ├── events/ # Propose, list, moderation
│ ├── notifications/ # Sistema notifiche
│ ├── profile/ # Gestione profilo utente
│ ├── utils/ # Geocode ecc.
│ ├── config/ # db.php
│ └── lib/ # session, notifier, mail
│
├── assets/ # Frontend assets
│ ├── css/
│ ├── js/
│ └── plugins/
│
├── uploads/ # Media caricati dagli utenti
│ ├── stores/
│ └── events/
│
├── config/ # Configurazioni globali
│
├── index.php
├── store.php
├── eventi.php
├── login.php
├── register.php
└── README.md
Authenticated users can propose a new event via modal form.
The event is saved with:
status = 'pending'
Admins can:
- Approve →
status = 'approved' - Reject →
status = 'rejected'
Moderation panel:
/admin/events-pending.php
When an event is:
-
Submitted
- Admins receive notification
- User receives confirmation notification
-
Approved
- User receives approval notification
-
Rejected
- User receives rejection notification
Notifications are stored internally and displayed via the notification system.
-
Event image upload is optional.
-
If no image is provided:
- A predefined placeholder image is automatically used.
-
Images are stored inside:
/uploads/events/
Frontend rendering dynamically resolves:
BASE_URL/uploads/events/{image}
- Clone the repository
git clone https://github.com/YOUR-USERNAME/recordstores.it.git- Create the database
- MySQL / MariaDB
- Import the schema from
sql/schema.sql
- Configure example files
cp config/db.php.example config/db.php
cp config/mail.php.example config/mail.php
cp config/oauth.php.example config/oauth.php- Ensure uploads directory exists
mkdir uploads
mkdir uploads/stores
mkdir uploads/events- Start the server (MAMP, Apache, Nginx, etc.)
This repository does NOT include:
- real credentials
- SMTP email accounts
- OAuth tokens
- user data
- uploaded media
All sensitive files are provided only as .example files.
Contributions, issues, and pull requests are welcome.
Guidelines:
- keep code style consistent
- comment critical sections
- clearly describe the purpose of the PR
This project is released under the MIT License.
See the LICENSE file for details.
Development & design: Recycle Design Community: music lovers and independent contributors
RecordStores.it is an independent project and is not affiliated with commercial platforms.