Frontend
We could have gone for Bootstrap but because we want the CSS bundle size to be as small as possible, we
opt for creating a CSS file specifically for noodles.dev. Minimized Bootstrap file is 19kB while our
custom
.css file is almost half the size.
For interactivity on frontend we opted to use ReactJS mini-apps. This
allowed to load the main ReactJS
bundle only once while the individual mini-apps each have less than 30kB.
All static resources are served through a CDN service (Cloudflare) thus
the initial resources loading
times
is considerably fast.
Backend
Whenever possible we are using Django inbuilt caching with Redis backend
for serving content as fast as
possible.
Processing full-text and aggregation queries would be very slow on SQL Databases, especially when
searching through large amounts of data. PostgreSQL supports trigram indexing and is quite fast but is
still not
as powerful as Elasticsearch which is built specifically for fastest full
text search. More on implementing
Elasticsearch with PostgreSQL on the full text search section.
Speed Measurements:
- Fulltext search in up to 0.5 million records in under 0.5s
- 0.7s load time for homepage
- 0.7s load time for searchpage
- 99/100 score on Google PageSpeed
Bundle Sizes
- 1 .css file of 10.8 kB in the top 10% of css bundle sizes < 14 kB
- 3 .js files totaling 72.1 kB in the top 10% js bundle sizes < 108
kB)