Off the bat- I apologize for the obnoxiously long question... I wasn't sure if Hashnode was the best place to ask this, but I thought, maybe there will be someone who would like the challenge... To summarize what this question is- basically, I am starting my first ever real-world coding project, have a basic idea of what my game plan should be but need some guidance.
So I work for a small commercial real estate company. In order to "kick-start" my new venture in dev and provide myself a real-world coding project- I offered to create an app for our company.
I know when I offered this I bit off alot more than I can chew; since 1. I've only been coding for a year, 2. I know html and Css pretty well but haven't built a website from scratch with it, and 3. I am still only at the semi-beginner's level of Javascript. However, I don't have a deadline, since it is more of a side project I'll be working on this next year and based off of past experiences, biting off more than I can chew seems to be the best way for me to learn.
The following is a description of what the app's basic functions will be- following that will be my "game-plan" based off of my limited understanding of website and app development. As a note, even though our current website is built through Wordpress- I want this app, or portion of the website to be completely from scratch using html, css and javascript and learning whatever I need to to conquer each step.
Based on my understanding of app development- an app can be one of two things. 1. A part of a website that allows users to perform actions- coded with any language and hosted on the website's server. 2. A mobile application downloaded from the google or ios store- to be coded purely with swift or android's language.
For this "App" I hope to start off by creating a website version and if it is shown to be helpful, eventually creating an IOS/Android version.
App functions: Essentially, this will be a "portal" between our brokers and clients (building owners or clients looking to buy/lease properties). The owner will have a UN/Pass which will allow them to see the buildings we are listing for them. They'll see the listing itself (photos, building specs, basically everything the public can see on our website), but they'll also be able to see notes from their real estate agent. This will include a calendar that shows when there will be showings at their building, and a status feed of notes from the agent informing the owner how the showings went, and files or photos uploaded by the agent. There should also be a way for the client to communicate to the agent in the app, via "commenting".
Game Plan:
Final questions
If you read this entire question and are still thinking about answering- wow. I need to buy you a beer. Thanks!
Your FIRST step:
Is flawed... since that's a backwards approach to "design". Photoshop is NOT a design tool no matter how many tools claim it is, or use it as such out of ignorance of ACTUAL design and how it relates to things like a dynamic UI (or as it's called in HTML/CSS, responsive elastic semi-fluid layout), accessibility norms, and limitations of the medium.
So the first thing I'd suggest is axing that from your plan. If Photoshop were to be used at all it should be for a last-minute paint-over, something we really DON'T need in most cases -- PARTICULARLY on applications -- as CSS becomes more and more capable.
Content dictates markup, content + markup + media limitations dictates layout. NOT the other way around.
Art is only a small part of ACTUAL design, so starting out with art is utterly and completely back-assward.
" I want this app, or portion of the website to be completely from scratch using html, css and javascript and learning whatever I need to to conquer each step. "
I absolutely love that you said this, as this is a very basic fundamental principle that most new devs/designers seem to ignore, so good on ya!
I actually built a custom real estate app for a local real estate office, and while I was not nearly experienced as a web dev, I insisted to continue along and learn as I go, and boy did I learn a lot :)
The best advice I can give is to go in with low expectations and look at it as a learning opportunity. Don't be afraid to make mistakes, in fact, I encourage you to embrace mistakes, and learn from them!
I build the frontend for a Real Estate website that includes this functionality, among other things. I've also built similar 'listing' sites before, so I'll try to ask some questions that might help point you in the right direction.
It's cool that you're so open-minded to use whatever tools and tech you can find to get the job done - with this kind of attitude I'm sure you will :D
My question) Is the app and its listings 100% self-contained to your company, or will you need to fetch MLS listings for the properties listed on your site?
Why is this an important question? If you just need any app at all that can:
Then you might be able to build a WordPress-powered site that has listing plugins that work like this and be able to cobble together much of the desired functionality inside a well-documented, familiar interface.
But, if you need to interact with MLS listings (ever, not even on day 1 but you want the ability in the future sometime) that's an entirely different situation. for us it required a lot of money, as well as specific server requirements, specific security requirements, and even still as far as I know, we pay to have access delivered to 1 IP address and domain. This means even subdomains on that same IP and domain can't get the listings! That's a major consideration that could dictate what technology you're able to use, and it might rule out WordPress.
To me your Game Plan sounds right for this stage of planning. When I look at your list, it immediately jumps to my mind that you need to worry most about the design of step 1 and step 7.C, and steps 2–7 are where you will likely be able to find ready-made applications, plugins, and tutorials.
Investigate WordPress and the various business listings plugins available. Most of them will probably do 80% of what you need, so you'll want to see if any suit your needs and make modification into your final product as painless as possible.
If you do want to DIY as much listing functionality as you can, I'd recommend starting with a barebones app framework that's taken care of:
For you. These are brutally boring parts of every app but it's crucial to get them correct. Even if you wanted to write it from 'scratch' I'd still recommend starting with a known-good example of an app that includes these parts and build on top of that.
A3) Can you tell me based on the functions of this app, what skills/languages I need to learn as I go?
It sounds like you'll need HTML and CSS, and likely a bit of JavaScript on the frontend, and then you'll need a database (MySQL is reliable and ready!) and at least one language server side - this can be PHP, Swift, Python, Ruby, JavaScript (node) or anything else you're comfortable with. There are even C++ and Cobol web frameworks out there, so if you happen to have experience with any kind of language there may be a web framework ready for you to be creative with :D
A4) Which parts of this project are worth reinventing the wheel vs. finding a plugin to integrate?
Oops I kind of answered that in A2), basically anything touching user accounts, authentication, and money should be built by somebody who does that as their primary thing, and the fun parts are the parts you'll either build yourself or find ready-made block to help build your vision.
A5) Is it even possible to create a separate section of our website that is not using wordpress and it all be under the same domain? We are using Bluehost for hosting, just FYI
Yes, you could have WordPress as the main folder of your site and have unlimited subdomains, and you can also create as many folders to host static content, apps, or other WordPress sites 'within' a domain too!
…though note that if you are interacting with MLS listings and other Real Estate listings coming from other servers it may mean that you only have the money to license one address + IP, so be sure you know the URL you want before paying anybody for access to listings :D
Good luck to your on your journey, and I hope this first app-building experience opens a whole new world of possibilities for you!