← Back to all projects

Client project3 min read

MyLanit, Photo Galleries and Photo Contests Web Part for Corporate Portal

MyLanit, Photo Galleries and Photo Contests Web Part for Corporate Portal

Tech stack

ReactSharePointReduxGalleryPhotoProjectFrontend

Services

  • →Requirements analysis and solution architecture
  • →Custom React + Redux web part development
  • →SharePoint REST API and list integration
  • →TinyMCE rich-text editor integration
  • →Admin interface and content moderation tooling
  • →API contract design with parallel backend team

Deliverables

  • ✓Self-service photo gallery and contest web part
  • ✓Automated contest lifecycle, voting opens and closes without IT intervention
  • ✓Admin web part with full CRUD, moderation, and results dashboard
  • ✓Masonry grid gallery with infinite scroll and engagement features (likes, comments, voting)

Challenge

LANIT needed a way to run internal photo contests on their corporate SharePoint portal, something that didn't exist out of the box. Employees should be able to upload photos, vote for favourites, and leave comments, while HR managers needed full control over contest lifecycle without touching code or calling IT.

Discovery

After digging into the requirements it became clear the scope was broader than a simple gallery widget. Two distinct modes were needed, a free-form photo gallery and a time-boxed voting contest, each with its own permission model, UI state, and lifecycle. Voting data had to survive portal restarts and integrate with SharePoint lists that already held other corporate content.

Options Considered

Three directions were evaluated before committing to a solution:

  1. Off-the-shelf SharePoint add-ins: rejected because none supported custom voting logic or the client's branding requirements.
  2. iframe-embedded external service: rejected due to corporate security policy prohibiting third-party data processing for internal content.
  3. Custom React web part: chosen. Full control over UX, data ownership stays inside SharePoint, and the codebase remains maintainable by the in-house team.

Decision

A custom React web part was the only path that satisfied all constraints simultaneously: data sovereignty, design freedom, and the ability to ship both modes from a single deployable artifact. Redux was chosen for state management given the complexity of cross-component voting state; Redux-Router handled virtual navigation without requiring server-side routing changes in SharePoint.

Implementation

Frontend and backend were developed in parallel under tight API contract discipline. Photo tiles use a masonry grid for a Pinterest-style layout; react-infinite-scroller eliminates pagination entirely. A custom TinyMCE wrapper bridges the rich-text editor into Redux Forms, a non-trivial integration that took careful lifecycle management to avoid memory leaks. A server-side scheduled job monitors contest end dates and automatically flips contests into results mode, removing any manual step from the HR workflow.

Two role surfaces were shipped: an employee-facing web part (upload, browse, like, comment, vote) and a separate admin web part (full CRUD for galleries and contests, moderation queue, results dashboard with deletion confirmation guards).

Almost all of the work happened on remote Windows servers. The remote desktop client became practically a second home, because every task started with connecting to a remote server.

Remote Desktop connection window to a Windows server, server address and login hidden
Every task started with a remote connection

Outcome

HR teams went from coordinating photo contests over email with manual vote-counting spreadsheets to a fully self-service workflow. Contest creation takes under two minutes. Voting closes automatically. Results are visible to all employees the moment the deadline passes, with no IT involvement required at any stage.

User interface walkthrough

Admin interface walkthrough

Analytics service

Collecting statistics from the internal portal into Google Analytics. The user data in the recording is made up and the secrets are test ones; it is published now that the confidentiality period has run out.

A walkthrough of the client's spec, showing how the business requirement for a report on a given metric can be met inside the off-the-shelf system already in place, without building something new.

Projects

Chelyabinsk State University, SharePoint Portal Development and Administration

Chelyabinsk State University, SharePoint Portal Development and Administration

Before: the university SharePoint portal lacked what the platform does not ship with: an events calendar, admission rankings fed from FoxPro exports, a mobile layout and spam-safe email addresses. After: custom web parts added a Google-synced calendar, SSRS ranking lists that update from an upload and hidden emails, and the site got a responsive mobile version.

Open for contract collaboration

I am available for contract-based collaboration. If you have an interesting project idea, schedule a call via Calendly.

Schedule a 30-min call