Faramin — Text Annotation & Review System
Faramin is a web-based platform for reviewing and processing speech transcripts, developed as part of an internal, university-backed organizational project.
The core of the system was an interactive text-annotation workflow that allowed users to select specific parts of a speech transcript and attach structured metadata at discursive, operational, and strategic levels.
Each text selection was saved together with its related metadata (such as type and collaborating university, uni-center...), then sent through a review workflow. Reviewers could inspect each item, approve or reject it, and leave comments. Once approved, annotations were locked in the researcher interface.
The system supported multiple access levels — including administrator, center manager, researcher, and reviewer — allowing managers to monitor and manage their subordinate centers.
My Role
I worked on this project alongside a technical lead (team manager) and a back-end developer, and was responsible for the entire front-end implementation and related decisions.
The project was developed as a monolithic Django application, and Faramin functioned primarily as a data-driven dashboard with role-based access and workflows.
At the start, we used a ready-made template that required adjustments like RTL support and localization. As the project progressed, I gradually took on more responsibility. designing pages, implementing UI components, building forms and tables, and defining front-end API needs.
Main Challenge: Text Annotation System
The most interesting and critical part of the project was the text annotation system. The main challenge was tracking text spans across speech, ensuring that:
- Text segments could be selected and their positions preserved across HTML tags
- Selections were visually highlighted and linked to their metadata
- Multiple annotations could overlap, nest, or partially intersect
- Annotations could later be edited, reviewed, and re-rendered
- Ensuring form and highlight interactivity and smooth UI/UX
- Different states such as draft, rejected, approved, or locked were managed correctly
- The original text remained intact at all times
Due to the complexity of this feature, I initially asked the team lead to assign it to a more experienced developer. An initial implementation was created in several JavaScript files (each slightly different) in isolation by another developer.
Later, I took ownership of this system, heavily refactored, extended, and debugged the existing code, integrating it into the main application logic. In practice, this module evolved from a prototype into a fully usable annotation system within a real production system.
Other Features
Other parts of the platform included standard forms, tables, and reports. Tables were implemented using Ajax DataTables, featuring CSV, Excel, and print export options.
Exporting to Excel was particularly challenging due to the complexities of handling Persian text, such as proper encoding, right-to-left layout, and formatting to ensure correct display.
The system also featured data visualization charts, which I configured and implemented.
Takeaways
Working on Faramin felt manageable with the experience I had gained so far.
The biggest challenges were the annotation system and Excel export, while other parts were more routine.
My work was focused and probably took less than 100 hours, but it helped me improve my front-end skills, better understand how things work, and collaborate effectively within a small team.


