

Scientify
Modern platform for managing and sharing scientific publications
Introduction#
The world of scientific research thrives on sharing, collaboration, and discoverability. Yet, as a student and aspiring researcher, I found that managing and disseminating scientific publications was often far more complicated than it should be. Many tools were either outdated, too complex, or simply failed to meet the modern needs of researchers and research groups.
Motivated by these challenges, I developed Scientify as a university project—a modern, full-featured platform designed to simplify the daily lives of those who produce, manage, and share scientific publications. In this article, I want to take you on a journey through the motivations, technical choices, and unique features that shape Scientify, including its use of cutting-edge technologies like Docker and NLP tools for automatic keyword extraction.
Why Scientify?#
I envisioned Scientify as a platform that could solve these problems by being:
- User-friendly, with an intuitive and clean interface.
- Collaborative, supporting groups and roles.
- Extensible and modern, using a robust backend and a dynamic, responsive frontend.
- Automated, leveraging NLP to reduce manual work.
Technology stack#
Scientify is built with a modern, pragmatic technology stack designed for scalability, maintainability, and developer productivity.
Frontend#
The user interface is crafted with JavaScript, leveraging the power and flexibility of the React ecosystem. This allows Scientify to deliver:
- A dynamic, single-page application (SPA) experience.
- Responsive design, ensuring usability across devices.
- Real-time features, such as live search and instant previews, that make interacting with large publication lists smooth and enjoyable.
The use of React also lays the groundwork for future integrations—think plug-ins, dashboard widgets, or even integration with institutional authentication services.
Backend#
On The Server Side, Python Takes Center Stage. The backend is built with a modern Python web framework (FastAPI), providing:
- A robust RESTful API to handle all client requests.
- Secure user authentication and role-based access control.
- Efficient data handling for publication metadata, user profiles, and group management.
Python was a natural choice due to its readability, the wealth of scientific libraries available, and mature support for both APIs and NLP tasks.
It provides an upload button to publish publications with some features:
- PDF conversion: the user can upload a PDF, docx or LaTeX file; it will be converted in a PDF.
- BibTeX mode: the user can upload a bibtex file to automatically get the publication’s metadatas.
- DOI: the user can optionally type the publication’s DOI; the system provides a redirect to the DOI page.
Database#
Scientify uses a relational database (such as PostgreSQL) to store structured data. This ensures:
- Reliable storage of publication records, user data, and group permissions.
- Fast and flexible queries, supporting advanced filtering and search features.
NLP Integration#
One of the features I’m most proud of in Scientify is its ability to automatically extract keywords from publications using Natural Language Processing (NLP). This is made possible by integrating the YAKE (Yet Another Keyword Extractor) library.
What is YAKE?#
YAKE is a lightweight, unsupervised automatic keyword extraction system. Unlike traditional keyword extraction methods that require large training datasets or language-specific resources, YAKE can identify meaningful keywords and keyphrases from individual documents with minimal setup.
How Scientify Uses YAKE#
Whenever a user adds a new publication—whether by uploading a PDF, pasting an abstract, or importing metadata—Scientify automatically invokes YAKE to:
- Analyze the text and extract relevant keywords.
- Suggest tags for the publication, making future searches much more effective.
- Reduce manual data entry, letting users focus on the substance of their research rather than the tedium of tagging.
This feature not only improves the discoverability of publications within Scientify but also helps surface connections between different works, fostering new collaborations and insights.
Collaboration and group features#
Recognizing the importance of teamwork in research, Scientify is built from the ground up to support collaborative workflows:
- Multiple users can join the same group, each with customizable roles (admin, editor, viewer).
- Shared collections allow teams to build and maintain a unified publication library.
- Access control ensures sensitive or unpublished work is only accessible to authorized users.
With these features, a research lab can easily manage its publication output, while individual users can maintain their own private bibliographies or contribute to group efforts.
Seamless deployment with Docker#
A modern application isn’t just about code—it’s also about how easily it can be deployed, maintained, and scaled. That’s why Scientify is fully containerized using Docker.
Why Docker?#
Docker allows you to package the entire application—including the frontend, backend, database, and even the NLP tools—into standardized, reproducible containers. This brings several benefits:
- Portability: Scientify can be deployed on any machine (your laptop, a university server, or the cloud) with minimal setup.
- Consistency: Every deployment is identical, eliminating “works on my machine” problems.
- Scalability: As usage grows, components can be scaled independently (e.g., running multiple backend containers).
How to run Scientify with Docker#
Setting up Scientify is as simple as cloning the repository and running a single command:
docker compose build #to build backend and frontend images
docker compose up -d #to run the app
bashDocker Compose orchestrates all the services—frontend, backend and database—so you can get started in minutes, whether you’re a developer or an end user.
Real-world use cases#
Scientify is designed to be flexible and adaptable:
- Individual researchers can maintain a digital archive of their publications, with automatic keywording.
- Academic institutions can deploy Scientify as an internal tool for students and faculty, promoting research visibility and collaboration.
Conclusion#
Developing Scientify has been a deeply rewarding experience, allowing me to combine my passion for software engineering and scientific research. By bringing together modern web technologies, NLP automation with YAKE, and the ease of Dockerized deployment, I hope Scientify can help researchers spend less time on administrative overhead and more time on what truly matters: advancing knowledge.
Check it out on github ↗! :)