A Nextcloud-based storage platform with a custom frontend and Elasticsearch-powered search, built to replace the chaos of scattered file sharing across six companies and 100+ employees.
Files lived everywhere and nowhere. Contracts sat in someone's WhatsApp chat. Design assets floated across three different Google Drive accounts, none of them official. When someone left the company, their files left with them. Onboarding a new employee meant spending half a day figuring out which shared folders they needed access to, then discovering half of those links were dead. With six companies and over 100 people, the lack of a central file system wasn't just inconvenient, it was a real operational risk. People were making decisions based on outdated documents because they couldn't find the latest version.
I deployed Nextcloud as the storage backbone but built a completely custom frontend on top of it, because the default Nextcloud interface wasn't going to win over people already comfortable with their messy habits. The experience had to be faster and simpler than what they were doing before.
Within a month, WhatsApp file sharing dropped dramatically. People actually started using the search instead of asking colleagues "do you have that PDF?" The custom UI made the difference. Nobody complained about learning a new tool because it felt familiar and fast. The Elasticsearch integration turned out to be the feature people talked about most. Being able to type a client name and instantly see every contract, proposal, and invoice related to them changed how people worked. File versioning quietly solved the "which one is final-v3-REAL-final" problem without anyone needing to think about it.
Adoption is the only metric that matters for internal tools. You can build the most technically sound system in the world, but if people find it easier to send a file over WhatsApp, they will. The custom frontend was more work than just theming Nextcloud, but it was the reason people actually switched. I also learned that Elasticsearch on a file system needs careful tuning. Indexing everything naively will eat your server alive. You have to be intentional about what gets indexed and how often reindexing runs.