Vireo CRM - Self-Hosted PHP + React CRM

Description
Vireo is a self hosted sales, CRM for one company. A team works a deal from the first conversation through a quotation, a purchase order, and an issued invoice, on a shared pipeline with a clear rule for who can see each record.
The interface is React. The server is Laravel 12 with Sanctum. Data lives in MySQL. Redis holds sessions, cache, and the queue. Demo and live records share one database, so an administrator can walk the sample book and then switch to the live book without a second install.
Google mail, calendar, and Drive are optional. Leave those fields empty and the rest of the CRM still runs. Exchange rates can be fetched nightly from Frankfurter, which needs no API key, or typed in by hand.
Features
- Dashboard for the open book: pipeline value, weighted forecast, overdue work, and a layout each person can rearrange.
- Pipeline from the first brief through an issued invoice, then Ready To Win, Won, and Lost. Deals move on the board or from the record. Stage behaviour follows flags (quote sent, purchase order filed, invoice recorded, invoice issued, won, lost), not the stage name. Forward moves into purchase-order and invoice stages ask for the paperwork those flags require.
- Contacts, organizations, and leads, with duplicate matching and a merge path. Leads convert into the book.
- Activities with day, week, month, and year calendar views. Followers, comments, and files sit on the record they belong to.
- Quotations, a product catalogue, and an invoice-request queue.
- Reports, insight dashboards, forecast, and targets, including team attainment.
- Teams and roles. A head sees the teams they manage. A team leader sees their team. A member sees their own book. Private deals stay private unless someone is a follower. Permission sets narrow what each role can do.
- Saved filters with ALL and ANY groups, including rules that reach across a deal, a contact, and an organization.
- Automations for repeated steps.
- Multiple currencies. Reference rates are fetched nightly when the scheduler is running, or entered by hand.
- Optional Google connection for mailbox, calendar, and Drive.
- CSV import and a Pipedrive export import, with a preview before rows are created.
- A guided tour and a help page on each screen.
- A seeded demo company: nine named accounts, four regional teams, and a sample book. Admin sign-in is
admin@vireo.org/password.
Requirements
- PHP 8.4, with bcmath, ctype, curl, dom, fileinfo, gd, intl, mbstring, openssl, pdo_mysql, redis, tokenizer, xml, and zip
- Composer 2
- Node.js 22 and npm, used once to compile the interface
- MySQL 8
- Redis 7, or a current Redis 7-compatible server
- Docker Engine and Docker Compose v2, only if you use the included Compose file. Node.js 22 is still required on the machine that runs npm.
Instructions
Try it on your computer
- Copy
.env.exampleto.env. SetDB_PASSWORDto a password you choose. LeaveAPP_URLashttp://localhost:8000unless you changeAPP_PORT. - From the project folder, run:
docker compose build docker compose run --rm --no-deps app composer install --no-interaction --prefer-dist docker compose run --rm --no-deps app php artisan key:generate npm ci npm run build docker compose up -d docker compose exec app php artisan migrate --seed
- Open
http://localhost:8000. Sign in asadmin@vireo.orgwith the passwordpassword. Change that password in Settings, Profile, before anyone else can reach the machine.
Put it on a server
- Install PHP 8.4, Composer 2, Node.js 22, MySQL 8, and Redis. Create a database and a user.
- Copy
.env.exampleto.env. SetDB_HOST,DB_DATABASE,DB_USERNAME, andDB_PASSWORDfor that database. SetREDIS_HOSTto the Redis server. SetAPP_URLto the public https address, and include that host inSANCTUM_STATEFUL_DOMAINS. SetAPP_ENV=productionandAPP_DEBUG=false. - Run
composer install --no-dev --optimize-autoloader --no-interaction,php artisan key:generate,npm ci,npm run build, andphp artisan migrate --seed. Generate the key once and keep it. A new key later makes saved secrets unreadable. - Point the web server at the
publicdirectory only.storageandbootstrap/cachemust be writable by the PHP user. - Keep a queue worker running with
php artisan queue:work. Add a cron entry so scheduled work runs:* * * * * cd /path/to/vireo && php artisan schedule:run >> /dev/null 2>&1
Use the CRM
- The seeded company opens in the demo book. Dashboard, Pipeline, Contacts, and Activities are the screens to walk first.
- Open a deal on the pipeline. Move it forward when the quotation, purchase order, or invoice that stage asks for is on the record.
- When you want real records, go to Settings, then Data. Switch to live and type
LIVE. Nothing is deleted. Use Wipe LIVE data, and typeWIPE LIVE, only when you want the live book emptied. Settings, the pipeline, and products stay. - Add your users and teams, or import a CSV or a Pipedrive export from Settings, Data. The import shows a preview before it creates rows.
| Author | youssefhaidar |
|---|---|
| Category | Scripts & Code / PHP Scripts / CRM |
| Price | $304 |
| First Release | Oct 10, 2026 |
| Last Update | Oct 13, 2026 |
| Database | MySQL 8.0, Redis |
| Files included | .php, .css, .html, .ts, .tsx, .json, .svg, .md, .yml/.yaml, composer.json, package.json, Dockerfile, .blade.php, JavaScript .js |
| Software version | PHP 8.4, Node.js 22 |
| Html/css framework | Tailwind CSS |
| Software framework | React, Laravel |
| Javascript framework | React, Node.js |
| Programming language | PHP, JavaScript, TypeScript |
Categories
Tags
External listing. code.market does not sell this product and does not process payment for it. Pricing, payment, delivery, licensing, refunds, and support are handled by the third-party merchant on its own website. We may earn an affiliate commission from a referral. Details.
Products of the Week.
Submit🥇
Actionbook
It works inside the user's own browser with the accounts already signed in. The user describes the result they need, and the agent reads, clicks and types through the pages, then delivers a dashboard or report where each data links back to its source.
Other · 699 views · 9 clicksOther · Week 44 · 699 views · 9 clicks
🥈
Free social media tools for creators & solofounders
295 free tools for growing your social media: write, plan, grow on local AI models, 100% free forever, No sign-up required, No trial. Write, check and measure posts on LinkedIn, Instagram, TikTok, X, YouTube, Reddit, Product Hunt and more: a free social media scheduler for 17 networks, engagement rate calculators, character counters, best time to post, hook generators and follower growth calculators. No login anywhere, no API or credit usage.
669 views · 6 clicksWeek 44 · 669 views · 6 clicks
🥉
STOP GUESSING WHAT TO POST
AI that learns your brand voice and builds a month of consistent, on-brand social content: carousels, posts and hooks that sound like you, not like everyone else's AI.
SaaS · 1,919 views · 21 clicksSaaS · Week 44 · 1,919 views · 21 clicks
#4
Hand-Placed Backlinks $9.99 per link. Flat rate.
Buy hand-placed forum, Q-A and directory backlinks. Flat $9.99 per link, no subscriptions — you only pay for approved listings.
Website · 1,870 views · 17 clicksWebsite · Week 44 · 1,870 views · 17 clicks
#5
Conversational Backlinks for Busy Founders
Place Backlink Relevant Conversation for your domain across Forums and Conversations
39,327 views · 210 clicksWeek 44 · 39,327 views · 210 clicks
#6
Free Invoice Generator - PDF Invoices in Your Browser, No Sign-Up
A free invoice maker for freelancers and small businesses: fill in the invoice, check the live preview, and download a PDF that looks exactly like it. Any currency, tax per item, three templates, no sign-up, and nothing leaves your device.
609 views · 11 clicksWeek 44 · 609 views · 11 clicks
#7
Merge PDF Files Free - Combine PDFs in Your Browser, No Upload
A free PDF merger for office workers, students, and freelancers: combine PDFs and images into one file in the browser, reorder files and pages, pick page ranges, keep bookmarks, and open password-protected PDFs. Nothing is uploaded, no sign-up, no watermark.
550 views · 4 clicksWeek 44 · 550 views · 4 clicks