Start project (simple web app). Basic requirements

webdevelopmentBefore you start any project from a scratch try to write down Specification where describe the concept, main entities, relationships etc. More details you provide more clear will be how to make this project for you and your team.

Remember if there is UI then it is really necessary to have a design (even simple mockup will be very good). Usually, by looking at the project design or mockup, we can recognize which type of objects need to have and what are the relationships between them. Now we can choose UI framework. If you develop a web app which runs UI in the browser then according to your knowledge, experience, and preferences you can choose UI framework, such as jQueryUI, AngularJS, Foundation Framework, Bootstrap, DHTMLx, Sencha etc.

Then next step will bring us to moment when we should choose persistence layer, usually its Database (SQL or NoSQL depends from the project). On this step is good practice to create UML diagram where describe the structure of DB and relationship between objects. If you work with MySQL then you can try free tool in MySQL Workbench (https://dev.mysql.com/doc/workbench/en/wb-getting-started-tutorial-creating-a-model.html)

Now you have to choose backend part where will implement business logic, data validation, data fetching and saving, user sessions, etc. If you have more experience in JS then I would suggest you use NodeJS for the backend, there are many frameworks which do most of jobs for you (I tried https://hapijs.com and it works great). If you have more experience with Java I recommend you try JHipster (its include frontend framework, backend – Spring, and ORM and DB drivers), Spring Boot, Play Framework (will be great if you have experience with Scala), etc.

It’s not the end, you have to add few more very important things:

  1. Version control – you can choose Git, Mercurial, SVN. No matter if you work alone or with a team you need to keep tracking your changes and will be very convenient to play with different ideas in different branches. I prefer Git (using Bitbucket for private projects and GitHub for public)
  2. Test framework – must have each project now, I don’t see any project nowadays which can survive after a set of changes (there are always changes to the project according to the customer needs). If your backend in Java you easy can connect jUnit framework and for frontend is Selenium WebDriver (simply integrates with jUnit). For JavaScript, you can take a look on JasmineMochaJSProtractor.
  3. Planning tools – according to which methodology you use (Scram, Agile) there are few good tools: Jira, Trello, Kanban flow.
  4. Communication tool – you can use emails, skype, facebook messenger but I prefer and very recommend Slack. So far I did not see better communication tool than Slack, if you know then please leave a comment.
  5. Continuous Integration tool – is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early. I can recommend TeamCity and Jenkins. Both are very good and useful.

Just after all of those step you can start development, write code, integrate modules, libraries, play around with different technologies and ideas. After some time to work with those tools you will get used to it and spend much less time for integrations.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s