I want to create a website that consists of multiple data sources and types. I am a bit rusted in website development and need your help to pick the rights tools to implement my ideas. The website will have a high share of mobile users (>70%) who will directly access the website via its domain or find the website via Google Search. SEO optimization is crucial. Hence, when thinking about frameworks, CMS, or themes, we need to consider this if there was an "easy" option to make a website and an android and iOS APP at the same time, even better.
Considering hosting, I will host everything on my dedicated server (Linux) and Apache or Nginx, depending on the tools you suggest. For instance, I read WordPress is coded for Apache and might face compatibility problems with Nginx. The server has a least two cores (AMD Epyc 2nd Generation), 8 GB of RAM, and a 300 GB SSD.
- Gallery of items and page per item
The website's main attraction will be a gallery/library/database that consists of images (items) and information about these images (e.g., name, description). People will filter, sort, etc., the images by specific criteria such as release date, tags, categories, etc. I was currently thinking about working with a static website and letting a server-side python script create those html pages when new content comes up, or existing content is updated. Overall it will be about 3000 to 5000 items, or HTML pages total, that will create before the website is released. When new content arrives, I expect not more than 40 new html files to be written or 20 existing files to be updated. Writing or editing those files should not be too big a problem for my server, considering its hardware. Images in the gallery (items) are aligned in a table. I assumed that the best way would be to get the user's screen width and show a number of prerendered thumbnails (location store in database) per column based on a user's specific browser width.
The meta-information about these images comes from multiple APIs. It is fetched via a server-side python script and stored in a Postgres database. New data comes to specific times (e.g., all 24 hours in the night). If existing data receive an update or new data are found, the python script would write new html pages and update the html pages of navigation/list view. The images will also be downloaded, stored on my server, and their path/filename saved in my relational database. Do not worry; the pictures will not cause copyright issues.
Do you agree that it is smart to create these pages server-side and let users browse pre-existing static webpages?
- Tracking of the popularity of items
I want to track the popularity of items per day/month/year using the page impression for each item. I want to account for clicks via the website gallery and direct access via google search. Long ago, I would have done this with PHP by writing each click into a database. However, I want to work with high efficiency because other stuff will be running on the server. The good news is, I only need this page access count to be calculated once a day or maybe once an hour. So I assumed I could save processing per click (e.g., write access via PHP to the database), etc., here as well and read the HTTP server access log file once a day or hour by a python script. The page structure would be something like domain.com/category/item-number-xx.html. This structure would make finding all access log entries for one item by a script pretty easy since categories and item numbers are in the database can be found in the database. Again, this should not create too much load on the server even if I had 2 million viewers a day.
- Dynamic parts - Voting system
The tricky part now is that I still want some dynamic content, which is a voting system per item. For each item, visitors should be able to vote thumbs up or thumbs down or one to five stars on one or multiple dimensions (e.g., originality, style, beauty). Here I have no good idea yet how to implement this. What would be an efficient way to send the vote to the server? Would it be efficient to directly update the html page by letting a python script write a new version of the html page? At peak times (once every 24 hours), there could be a peak of visitors and voters. Any suggestions on what the most efficient way would be to implement this?
- Searching for content
I have no clue how to implement a search for such a system of galleries and items. I assume the keyword search would be forwarded from the website's html page to the database for the right tables. Depending on this item ID, there is a matching in any database field (name, description, etc.), I would need to create a search result page in a predefined structure linking to the corresponding item. What would be the best way for this? Via PHP dynamically? Via the Python server-side and create a static search result page /search-results/keyword1-keyword2.html? I could also learn NodeJS or other languages to do this if needed.
- New content and Navigation
On this website, I also want to implement dynamic content depending on what is going on in social media such as Twitter, Youtube, etc. However, I do not want to write all 3000 to 5000 html pages once an event occurs. I briefly checked for html5 options, and it seems that object tags would work for this? A python script would frequently check for new fitting content and write an html file (sidebar-social.html) that will be included via the object tag into each item page and the gallery overview.
- Additional Content
The basic version of the website will have only 3 or 4 navigation points. A landing page, the gallery overview (which will lead to each item's page), and some contact info. Later versions of the website will have additional main pages. For instance, a news page, more databases (for different items, etc.)
- Dynamic/interactive map
I also want to create a map and show user-selected data points on this map. This interactive map is an additional feature and navigation point. The map and the available data points are going to be static. That means the list will be updated from time to time, but all users should see all the list options and an on/off switch.
Imagine the map of the city or country. Somewhere on the website (to be determined) will be a list of options with on/off switches. The options, the images to overlay on the map at locations x,y, and so on, will be written by the python script from time to time. Could this somehow be done with CSS, or do I need some implementation of JavaScript? I also want to make the information (locations of the map) as had to "steal" by third parties as possible. Any ideas on how to implement this the best way?
- Login
Eventually, I want the users to log in via their existing external user accounts (Google, Facebook, etc.) using OAuth. There will be some login options that are not so mainstream. Hence, assume I will have to code the login procedure myself. How does this affect my choice of Framework, CMS, etc.?
- User notifications
I want to have user notifications. Users will be prompted to turn on notifications in their browser and get notified when new content is available. This feature is essential, and I think that many users using this website will use this function. What would be the best way to implement this feature? Firebase?
- Ads and their positioning
The site should display ads. I did not work with ads on websites in the past. Can I hook up with Google Ads, and they position the right ad dependent on my content and the user device, or do I need to specify the ad location of any possible resolution and device myself in the HTML code?
Conclusion / Questions
So now I provided you with an overview of what I want to do. I think I have a good basic idea of what to do, but the mix of static and dynamic content is confusing me. Also, the login topic confuses me.
In my opinion, the only thing that would require a CMS would be the blog/news page part for faster and easier editing. Otherwise, I should also be able to code everything by hand in plain HTML5. I did not work on the frameworks so far. Hence, I do not fully understand their advantages and disadvantages. If anyone could provide arguments for and against frameworks like bootstrap, I would highly welcome them. I am willing to pay for stuff like frameworks, cms, or themes.
Aucun commentaire:
Enregistrer un commentaire