Elsevier's mission of helping researchers and healthcare professionals is rooted in publishing and has also evolved into a global leader in information and analytics. With so much health-related information being shared in real time, Elsevier decided it was time to modernize and speed up their existing manual peer review process.
Building an application to speed up the peer review process would help Elsevier remain a leader in healthcare research. They dedicated a small project team consisting of Serghei Ghidora (Tech Lead), Paul Foeckler (Product Owner), and a UX Designer to develop a minimum viable product (MVP) to make the peer review process faster and more efficient.
Streamlining a very manual, logically complex publication process is a tall task. Serghei knew that being flexible was going to be key to developing a successful MVP.
"The flexibility of moving fast and changing the product based on user feedback fast was crucial"
GraphQL provided the nested data structure necessary for multi-user document editing. Being the only tech person working on the project, Serghei also knew he needed tools that were going to eliminate undifferentiated work. The handling of definitions, resolvers, schemas, and models all by himself is a daunting task for a single developer.
"Writing all that by yourself, it's a lot of work. Especially because you don't just write it once. You write, you refactor, you change things. You throw stuff into the garbage, because it didn't work. You need to experiment again with the user. The flexibility of moving fast and changing fast, that was crucial."
Looking for technologies that worked best with GraphQL, and to eliminate as much manual code as possible, Serghei discovered Prisma with Nexus. Working with Prisma Client and Prisma Migrate, Serghei set himself a strong foundation centered around speed, developer experience, and flexibility.
The team desired to focus on speaking to users every day to understand what their needs were and what features were the highest priorities for the MVP. Serghei used Prisma Migrate to automatically generate fully customizable database schema migrations gave Serghei the confidence to be able to implement changes quickly and hassle free.
Based on user feedback, a change may be made to the database like the complete removal or addition of a database entity. Without Prisma, such a change would have forced Serghei to spend more time refactoring and error handling, and less time innovating.
"When it comes to the data model experimentation, handling migrations and things like that is just amazing. That you are able to add something or remove something in Prisma, and you run the migrations and Prisma will do everything by itself."
Prisma Client's TypeScript experience also proved to be crucial to development by ensuring confidence in the code after making changes.
"I think it's the nature of Prisma that gives you a good way to structure things. Also because it's TypeScript, right? So you can't miss things. Your frontend application types are always in sync with what's available on the database level. That's a big, big deal. I think a key factor for scalability for the future, because you always have both ends in sync."
Serghei understood the importance of selecting technologies that were going to allow him to be fast, while also maintaining scalability for the future.
"We're running real science through the MVP now. And despite being a large and complex product already, the MVP still holds up. There are now not many bugs where anything crucial doesn't work because the core is really well done. And Prisma is one of the bricks of that foundation."
The flexibility proved to be a major contributor to a single tech lead producing a meaningful product in just ten months.
In addition to Prisma, Serghei utilized several other technologies to achieve their MVP. The project structure looks like the following, with Prisma serving types to multiple apps.
The Prisma & Nexus package includes the Prisma schema, migrations and all the generated types that are used across all apps and services. The lambdas import the Prisma client and update resources directly. This arrangement keeps the database and frontend types in sync because of Prisma Client's type-safe database access.
The Business Logic package backed by Prisma serves the GraphQL API schema and frontend. Prisma with GraphQL ensures that only the necessary data for each peer review is returned. Writing both the API and frontend in TypeScript powers confidence when writing database access and allows for shipping feature updates faster.
If there is a breaking change in the schema, TypeScript will raise errors on all the instances of the data model types, resulting in easy identification across the entire project structure and a smoother, more flexible developer experience.
The MVP is already showing improved efficiencies in the journal publication workflow. Elsevier is confident they have the right technologies in place to scale on their achievements so far.
Based on initial results, Elsevier is keen to continue investing into modernizing their publication flow. They're now moving forward the product from MVP to full-scale production capable.
By taking advantage of tools like Prisma, the Elsevier team can build more helpful tools to advance a greater number of scientific publications through the online reviewing flow.
To find out more about how Prisma can help boost flexibility and productivity, join the Prisma Slack community.