Recent

Author Topic: Build me a dating website using Lazarus and...  (Read 11062 times)

RedOctober

  • Sr. Member
  • ****
  • Posts: 450
Build me a dating website using Lazarus and...
« on: May 28, 2018, 12:40:35 am »
...what ever else gibberish acronym tech you want to throw on top of it.  (Qxotica / Qooxdoo ?).... (anying else?)

I currently use Lazarus 1.8.2 and FPC 3.0.4, so it wd be nice if you could match that, bc I have existing production products I need to support using this version combo, and I've tried to update before and it blew up my code, so I'm kind of reluctant to upgrade unless I really have to.

- I can send you more detailed specs
- Must be professional looking, have security (good auth & auth, but I don't care how you accomplish it)
- Must work and Look good on both desktop and phone (two separate interfaces is ok, or even two completely separate projects)
- Must use Firebird RDBMS. (I can handle / build all the DB stuff)
- Must be scalable to 1,000 users to start with


Options:

- I am the sole owner of the code when you are done.  (Costs me more, but only a one time payout to you)

- I am the sole leasee of the code when you are done.  (Costs me less, but you get continued income stream if the project is adopted by my customers)

I have no idea if this will catch on, and I'm risking my own money, but, I don't expect you to bust your buns for free, so let's keep costs reasonable for me and fair to you.  If his catches on, more money for me means more paid hours for you.


Phil

  • Hero Member
  • *****
  • Posts: 2737
Re: Build me a dating website using Lazarus and...
« Reply #1 on: May 28, 2018, 12:46:19 am »
I have no idea if this will catch on, and I'm risking my own money, but, I don't expect you to bust your buns for free, so let's keep costs reasonable for me and fair to you.  If his catches on, more money for me means more paid hours for you.

I had to read that topic title more than once. Do you mean a site like one of the many existing dating sites (eg, https://www.okcupid.com)? Why exactly?

RedOctober

  • Sr. Member
  • ****
  • Posts: 450
Re: Build me a dating website using Lazarus and...
« Reply #2 on: May 28, 2018, 02:07:58 am »
I had to read that topic title more than once. Do you mean a site like one of the many existing dating sites (eg, https://www.okcupid.com)?

According to Google, there are about 8,000 competing dating websites in the world.

Why exactly?

If I told you that, I wd be giving away my competitive advantage.

However, I will give you a hint....

A dating website comes closet to what my finished product will be, and everyone knows what a dating website does, how it works etc.  'nuff said.

Also just throwing this in there.. you can include mORMot  in the list of acronyms you can use.  I'm not restricting choices of middle-ware or presentation layer ware.

I must have ownership rights or equivalent access to the source code when done.


Phil

  • Hero Member
  • *****
  • Posts: 2737
Re: Build me a dating website using Lazarus and...
« Reply #3 on: May 28, 2018, 02:19:05 am »
A dating website comes closet to what my finished product will be, and everyone knows what a dating website does, how it works etc.  'nuff said.

Okay, that makes more sense. Not exactly a dating site, but uses the dating site paradigm / model.

Where do you see Lazarus fitting in? I don't really think Lazarus makes much sense with a Web app except maybe as text editor. With a qooxdoo Pascal->JS project, Lazarus can't even syntax highlight the .json and .scss files that are equally important as the .pas files. Something like Visual Studio Code might make more sense.

Sounds like a fun project for somebody. If you use pas2js on the frontend, you'd be able to do everything in the same language, presumably, if that's important to you for some reason.

Not sure how much Web frontend / OAuth experience you'll find here though.

RedOctober

  • Sr. Member
  • ****
  • Posts: 450
Re: Build me a dating website using Lazarus and...
« Reply #4 on: May 28, 2018, 03:56:58 pm »
You have framed my "challenge" (problem) perfectly.  I don't know much about web apps.  I built a few in Delphi over the years and, other than looking like crap aesthetically, compared to "modern" web pages, they worked well for the task they were put to.

If there are better choices than Lazarus, I'm open to suggestions.  The only times I've used Visual Studio was to install it, then uninstall it, because I used Lazarus to solve my problem instead.

Where else should I be looking for help Phil?  The only reason I was thinking of Lazarus and Pascal was I'm familiar with Pascal.  But if there's a better technology for this kind of thing, then I'm ok with switching.

I was hoping there was maybe a completing "dating site template" already built in some technology that I could use as a base.


Phil

  • Hero Member
  • *****
  • Posts: 2737
Re: Build me a dating website using Lazarus and...
« Reply #5 on: May 28, 2018, 04:20:30 pm »
I was hoping there was maybe a completing "dating site template" already built in some technology that I could use as a base.

That might be a good place to start. The problem that a dating site solves is actually quite general. That is, link up people who don't know each other over some common goal. I think I once saw a "dating site" for manure, to link up livestock producers with excess manure they couldn't utilize (maybe not enough crop land) with crop producers who otherwise would purchase their crop nutrients as commercial fertilizer. Once matched, you get a win-win situation for both economically.

I think everyone is scrambling to adapt to the new computing world, where desktop is no longer king, or even relevant in many situations (like with your idea). Even a Web site needs to be mobile-optimized since that's often the way users first come to the site, not from their desktop browser.

But Web apps are not trivial, despite their apparent advantages in deployment and accessibility. However, once you've determined what information you need to log, you ought to be able to break the app into two parts, the server and the client. The server part you could probably write independent of how you eventually plan to implement the client part. In fact, you could have multiple clients - eg, a native mobile app too. You could start on the backend once you understand the problem well enough and postpone the client side until you've decided on what JS library or approach to use.

The UI of Web apps is also harder to do in the sense that because there really isn't any standard or best practices for how the UI looks and behaves (the way there is with, say, iOS or macOS or even Windows), a lot of the success of a Web app UI is really an aesthetic one - can you design a UI that resonates with your customers.

Also, don't forget about the expense of having an attorney write up your terms and conditions document and your privacy statement document. If you're operating in Europe or have European (EU) customers, you also have to comply with GDPR, which went into effect on Friday.

Thaddy

  • Hero Member
  • *****
  • Posts: 14169
  • Probably until I exterminate Putin.
Re: Build me a dating website using Lazarus and...
« Reply #6 on: May 28, 2018, 04:21:19 pm »
Quote
- Must use Firebird RDBMS. (I can handle / build all the DB stuff)
- Must be scalable to 1,000 users to start with
That's a contradiction in terms. Firebird does not scale. (to 1000 connections at the same time)
Quote
- Must be professional looking, have security (good auth & auth, but I don't care how you accomplish it)
Looks and security are not related. Separate those two.
And you *should* care about how it is done. It should be industry- and current cryptography standards.

People who try to run dating sites already have a very high risk of ending up in prison.
Make sure
- you do what I say.
- Have very good lawyers
- can prove good intention (the date, not the money)

« Last Edit: May 28, 2018, 04:34:24 pm by Thaddy »
Specialize a type, not a var.

Chronos

  • Full Member
  • ***
  • Posts: 240
    • PascalClassLibrary
Re: Build me a dating website using Lazarus and...
« Reply #7 on: May 28, 2018, 04:33:47 pm »
An interesting topic. I would added to that, that nowadays you also need Android and iOS app for your site to have competitive advantage or perhaps to not have a disadvantage. So this is also a question about one code base for app server, web site(web client), android app, iOS app and perhaps even desktop app. And in current state of matters Lazarus/FPC is pretty problematic to use outside of desktop app area. Unfortunately there are no complete and proven solutions for mobile and web apps. So any work in that field would be pretty time consuming and therefore costly.

I also want to build and use some sites like one which would server as free & open source ride sharing platform. But so far I didn't find proper tool for not even initial development but also later maintenance and improvement. Most of such sites have similar core structure so if any such site would be developed using Lazarus/FPC then we would simply be able to take it, modify it and improve it by some new modules.

So this topic is interesting for many of us. I don't want to use PHP for new web projects. Ideally it would be nice to be focused on single development tool.

Thaddy

  • Hero Member
  • *****
  • Posts: 14169
  • Probably until I exterminate Putin.
Re: Build me a dating website using Lazarus and...
« Reply #8 on: May 28, 2018, 04:35:23 pm »
read my full previous reply first.
Specialize a type, not a var.

RedOctober

  • Sr. Member
  • ****
  • Posts: 450
Re: Build me a dating website using Lazarus and...
« Reply #9 on: May 28, 2018, 05:09:01 pm »
All good points guys.  In response to Thaddy:  Firebird will scale to 1,000 concurrent connections or more, only limited by OS.  (You have to use "Classic" server installation type)  A lot of info on Firebird on the Internet is outdated version 1.5 stuff.  The links below are outdated but give you an idea.  Having said that, depending on the design of the application, if it can get away with using REST, then the connections last only microseconds then disappear, so conceivably, connection pooling wd give another big boost to the number of users able to be supported.

See:

http://www.firebirdfaq.org/faq292/

https://www.firebirdsql.org/file/documentation/papers_presentations/html/paper-fbent-impacting.html



valdir.marcos

  • Hero Member
  • *****
  • Posts: 1106
Re: Build me a dating website using Lazarus and...
« Reply #10 on: May 28, 2018, 08:30:10 pm »
Quote
- Must use Firebird RDBMS. (I can handle / build all the DB stuff)
- Must be scalable to 1,000 users to start with
That's a contradiction in terms. Firebird does not scale. (to 1000 connections at the same time)
How come Firebird does not scale?!!!
Even before Firebird ever existed, Interbase already scaled for more than 1,000 users since when Classic version appeared. I am talking about 1990's.
The Firebird Project was born in July 31, 2000.
So, yes, Firebird has always scaled from embedded to more than 1,000 simultaneous connections.
Of course, to scale Firebird that far, you need expensive high quality infrastructure and specialized staff, like any other big DBMS.


How many users can connect to Firebird simultaneously?
There is no limit in the Firebird server - it is limited by the resources in your server. However, most operating systems have a hard-coded limit of 1024 connections per TCP/IP port, and there are known cases of Firebird working with that many users (typically when classic client-server application is used over Internet).
If you need to serve more than 1024 clients, you should use some connection pooling technique - build a multi-tier application, and have multiple users use the same connection.
http://www.firebirdfaq.org/faq292/


Classic
The Classic “server” is in fact not a database server at all, but a background service (or, on Linux, an xinetd daemon) that listens for connection requests. For each successful connection the service instantiates a single Firebird server process that is owned exclusively by that connection. The result is that each connection uses more resources, but the number of connections becomes a question of the amount of RAM available on the host machine. In addition to the ~2Mb to instantiate its connection, each also maintains its own, non-shared page cache. All connections get the same starting cache and, since the cache does not need to cater for shared use, it can (and should) be smaller. The recommended size is around 2Mb (512 pages for a 4Kb page size) on a 4Gb dedicated machine, but it can be much less. It is important to keep enough RAM available for the lock manager's table to “grow into” for peak connection loads.

Connection Pooling
Using middleware to hold and manage pre-allocated resources to keep a finite number of connections ready for incoming connection requests is known as connection pooling. There are several ways to implement connection pooling and compelling reasons to do so when a growing user base must be catered for. It would be unrealistic to set out to build an extensible multi-tier system without it. Connection pooling may be combined with a “queuing” mechanism if resources are inadequate to cope with peak loads.
The middleware developer needs to take special care to monitor attachments and detachments, especially from “stateless” clients like web browsers, to avoid resource leakages. Middleware should guard against recursive threaded workflows that could monopolise the pool and, for architectural reasons, should prevent threading across connections totally.
https://www.firebirdsql.org/file/documentation/papers_presentations/html/paper-fbent-impacting.html

Thaddy

  • Hero Member
  • *****
  • Posts: 14169
  • Probably until I exterminate Putin.
Re: Build me a dating website using Lazarus and...
« Reply #11 on: May 28, 2018, 09:15:42 pm »
Quote
- Must use Firebird RDBMS. (I can handle / build all the DB stuff)
- Must be scalable to 1,000 users to start with
That's a contradiction in terms. Firebird does not scale. (to 1000 connections at the same time)
How come Firebird does not scale?!!!
Even before Firebird ever existed, Interbase already scaled for more than 1,000 users since when Classic version appeared. I am talking about 1990's.
The Firebird Project was born in July 31, 2000.
I know. At that point in time I had strong connections with the authors (because I did some consultancy work for Borland and Inprise) .
And no, it still does not scale. We tested that - even over the years -. That's the reason it is not a mainstream database engine.
It is good (and stable), but not suitable for  a scalable internet based solution at all.
Look at the market leaders for that. Don't use it in any serious solution and /or commercial code: once bitten twice shy.
Few people have the knowledge, even less people can or will be able to maintain it. Good idea, bad execution. Both market and technical advances demand better.

1000 users at the same time blows it up.....
[edit]
What may be a good idea for "dating" websites... 8-)
« Last Edit: May 28, 2018, 09:33:59 pm by Thaddy »
Specialize a type, not a var.

 

TinyPortal © 2005-2018