More about this website
Want to learn more about this website: its history, features, and drawbacks? Then don't waste any time and get reading!
Glad to see you on this site 🖐. My name is Romanenko Serhii and I am its developer. The "Lawshield" website (Site2) is an example of a legal company's website. Despite its apparent simplicity, it is quite complex and functional.
Throughout the development of "Lawshield", I adhered to the basic principles:
- Reliability
- Quality
- Ease of expanding functionality
- Ease of use
- Fast updates
The Site2 code is created in the programming language PHP, which is the main one. There are no other languages or frameworks inside. For external display, the css framework Bootstrap 5 and Javascript are used. As you can see from the list - nothing superfluous.

Structure
All website components were created by me personally. This is entirely my work. It can be divided into several parts.
The first of them is the tools that make everything work. I spent most of my time creating them. These are the components php-server and php-container. In simple terms, the first is the engine, the second is the configuration.
The second part is the modules of this site itself. These include articles, authors, images, audio, banners, admin panel and more.
The third part is the content on the site. It is a reflection of the fictional law firm "Lawshield" that I invented. These are specific articles on administrative law, their translations, images in webp format, audio in mp3 format, page translations, and more.
As you can see, I can take any set of parts, combine them, change something, add something new and create a unique website. You are not limited by the content, appearance, or functionality of the "Lawshield" website.
Functionality
Now in more detail about the functionality, which is probably what interests you most. The "Lawshield" website has the following functionality:
- Unique page routing system
- Multiple languages
- Working with images as a separate resource
- Publication of materials
- Placement of audio translations of materials in the appropriate language
- Creation of special website pages such as Contacts, About
- Filtering articles on the external site and all resources in the admin panel
- Block of most visited articles
- Block of similar articles
- Block to continue reading
- Banner on the Home page and categories
- Pop-up window "Accept terms and conditions"
- Protection against csrf attacks
- Admin panel
- Automatic sitemap and breadcrumbs generation
- Full-text search based on Postgresql for articles
- Javascript components
- Fast launch using Docker
- Minimum memory
- Website optimization for fast internet browsing
You can learn more about the code and download the current version on github. The site code is in open access. Here is the license, which you must read before using the code. If you are a developer, it will not be a difficult task to install and see how everything works inside. I have developed some documentation that should help.
How to get started
You can start with the sitemap, which contains all the public pages, so you won't miss anything. The arrow next to the page name means it's a list. Just click the arrow and the list will expand.
If you are interested in what the admin panel looks like, write me an email and I will give you access to view it. My contacts are at the bottom of the page.Product readiness
When developing Site2, I paid attention to making sure everything worked as it should, without errors. The website has all the translations, content, and at first glance, it seems to be ready for use. But this is not entirely true. I deliberately left several components unfinished. For example, there is a list of courses and teachers on the Home page, but such structures do not exist in the site's system. Also, the admin panel does not have a convenient search for articles and other objects. The visitor login system is a dummy and does not actually perform any verification. Why did I do this? First, I don't want this site to be completely ready and immediately ready for use. If you are a developer and want to use it, you will probably have to work on it a little. Second, I don't want to waste time coding the same thing over and over. The site login and email confirmation system is demonstrated on the Site1 website. My next work should be different and demonstrate something new, but it may include something from previous ones for a complete picture.
Why not go the template route
It's no secret that almost all websites are now created based on ready-made templates, of which there are quite a lot. During 2023 and part of 2024, I studied the magento system, which is quite common for creating online stores. As confirmation of my words, I can show you the module I developed. I also had a superficial look at wordpress, which is the most popular base for creating a small website. Despite the time spent, I refused to develop based on other templates. My personal opinion is that templates significantly narrow the developer's horizons. It's like you're renovating a room instead of designing and building a city. What a comparison! The same applies to php frameworks like symfony and others. Of course, you have more freedom with them, but they still dictate the rules to you.
So if you want to get your own unique site, not a template, then you are where you need to be.
More details on functionality
Unique page routing system
I have developed and implemented a navigation system in this site that interconnects all pages. They seem to know about each other. I am currently unaware of similar developments. If you take any website, each page lives separately and combining them requires additional effort from the developer, which can affect the quality of the development. As an example of my system's implementation, I can show you the sitemap and breadcrumbs. They are generated automatically. If a new module is added, for example, services, the new pages will automatically appear on the sitemap. Also, this system makes it easy to differentiate access to both individual pages of the site and the entire block, which helps to implement the authorization system.

Multiple languages
Currently, the content on the "Lawshield" website is displayed in English and Ukrainian. But this is not mandatory. You can leave only one language or add others.
Working with images as a separate resource
At first glance, the images here look the same as on all other sites. But there is a difference. I managed to make them adaptive. This is essential for SEO optimization and speed. I'll explain how it works - a search engine (for example, Google) is shown a large and "heavy" image to download, while an ordinary visitor gets a much smaller image that is adjusted to their personal device. This way, Google knows we have a good image and should increase the site's ranking. And the visitor gets the picture quickly and without unnecessary transmission costs.
Additionally, this functionality allows you to have one good large image in the database, and in different parts of the site, you can create images of different sizes based on it. This relieves the site administrator of the extra work of creating the same type of images for different parts of the site. Thus, design changes are made by a single entry in the code template without re-processing images.
Example:
- Link to the main image that should be indexed by the search - here.
- The three images below are artificially created.



Publication of materials
The website has the ability to publish materials. In other words, a Blog. If your activity is blogging, then "Lawshield" has everything you need. If your activity is related to services or goods, then this functionality must be programmed separately. The blog itself is an important part of a modern website. Publishing materials on your topic allows you to get clients from free search. It's all about SEO.
Articles are placed along with audio translations of the materials in the appropriate language. This is a rather rare functionality, the programming of which took a lot of time. Your articles can be listened to on the road, in the kitchen at home, or while walking around the city. The site does not do this automatically. You have to translate and upload the audio yourself.
Creation of special website pages like Contacts, About
The site allows you to create any number of pages on different topics. You are currently on one of them. Usually these are privacy policy, contacts, about the company, and so on. The text is edited in a special editor.
Filtering articles on the external site and all resources in the admin panel
For the convenience of reading articles and managing available resources in the admin panel, the website has a system for filtering and pagination (page number transitions). This system has basic functionality and can be expanded as desired.
You can see an example by choosing a category with a certain number of articles on the categories page.
Additional blocks for articles
The site keeps statistics on unique visits to articles. The most popular will be shown on the category page and in the latest articles. You can view and reset the statistics in the admin panel.
There is a function to remember the last article read. It will be shown in the "Continue reading" section in your account and when you open a new article.
Also on the article page, similar articles by category are offered. Their number is limited to three and can be changed as needed by making changes to the code.
Banner on the Home page and categories
A banner is nothing special and is based on a picture of a specified size. You can assign any image on the site as a banner. It is possible to assign a priority so that the corresponding image is shown more often than others. If necessary, the functionality can be expanded.
Pop-up window "Accept terms and conditions"
When a visitor first enters, the system suggests accepting the terms and conditions. This behavior is common for most resources on the Internet. Currently, the window will appear until the consent button is pressed. This, as well as the appearance, can be changed if needed.
Protection against csrf attacks
If you are not a developer, you probably won't be interested in the details of the coding. All you need to know is that the site has additional protection for users when they send some information about themselves to the system. Protection means preventing information interception for the purpose of gaining access to an account.
You can read more about this in the code documentation.
Admin panel
The "Lawshield" website has an admin panel for content management. Here you can add images, audio recordings, articles, and translations. It is very easy to create pages. All objects are interconnected and have an activation status. If, for example, an image is inactive, it cannot be shown on the site. An article with such an image will also be considered unfinished and therefore will not be published. If an object is used in the system, it cannot be deleted.
When creating the admin panel, I started from minimal requirements. No beauty, just the necessary functionality. Of course, all this can be changed.
If you are interested in what is inside, write me an email and I will give you access to view it.
Full-text search based on Postgresql for articles
Given that there can be many articles, searching them makes sense. Next to the menu there is a search field and a button with a magnifying glass icon . The results should include articles that contain mentions of the search words. In this case, the selection is made based on the translations of the current language. All results are ranked according to relevance. If a word is found more often, the article will be higher in the results.
The search is based on the Postgresql database, which holds all the information about the articles. If necessary, you can include site pages, images, or anything else in the search. But this requires making changes to the code.
Javascript components
To process information from the visitor's side, ordinary browser javascript is used without adding third-party libraries. This allows you to reduce the number and weight of files that are transferred with each request and speed up the work of the pages. All components are created by me personally and can be easily expanded to the required functionality.
Javascript is used to display the "Accept terms and conditions" window, search, filtering, and any other interaction of the visitor with the website. The components are an integral and important part of the system, but do not affect the operation of the server, the code of which is created in Php.
Fast launch using Docker
For developers interested in this project: the site is configured to run using Docker, which will significantly speed up its start, familiarization, and development.
Minimum memory
The "Lawshield" website was developed by me with minimal use of third-party code. This is important not only for product security, but also for speed. During coding, my own developments were used. All this resulted in 4.19 MB of RAM at the peak of operation for each request. For comparison, the Symfony framework alone, on which sites are often coded now, loads 25.16 MB of memory for each request without taking into account the website itself. Of course, Symfony has a lot of everything. Only one question - do you need it? This is what can be called optimization.
Website optimization for fast internet browsing
With the optimization, the page loading speed of this site on a regular computer is approximately 100-130 ms. Let me remind you that there are 1000 milliseconds in 1 second. We can say that the page loads almost instantly. The speed drops only when searching for articles, and this is related to complex algorithms for retrieving information. The formation of the response takes approximately 700 ms. But even Google spends approximately 500 ms on a response. So here, unfortunately, the visitor will have to wait for an answer to their search query.
The site is optimized for the Internet and has high performance according to Google's PageSpeed Insights resource. Anyone can visit and evaluate the quality of any page of any website. It's free and fast. Site2 is in the green zone and has the highest performance. Here is a screenshot of this page as of October 09, 2025.

So, Site2 must satisfy the requirements of both visitors and search engines. And all this must be directly reflected in money.
Website price
Finally, you have reached, probably, the most interesting part - the price 💰. I have been talking about everything for so long, and you have read all this. If you really read everything, my respect to you!
For developers
I offer you all this for free. If you are a developer, download the latest code on github, install and modify as needed. Use it for yourself, for learning, for business without restrictions.
For business owners
If you are looking for a solution for yourself here and you like this website, I suggest creating something new based on it. Do you have a ready-made design? Good. Don't have a ready-made design? That's not a problem either, we'll draw one. There are many talented designers. This site and all its components will be free of charge. You only pay for changing the code or implementing new functionality.
What do you get? I repeat what was at the beginning of the article:
- Reliability
- Quality
- Ease of expanding functionality
- Ease of use
- Fast updates
The "Lawshield" website is written by people and for people. It is not a template, but a work of art!
Contacts
For all questions regarding the operation of the "Lawshield" website, you can send me a message to my email address ✉️pomahehko.c@gmail.com, I always try to respond in a timely manner.
Visit Romanenko Studio to see my other works.