I am the kind of person that always has in mind a few pet projects’ ideas. Some of them are crazy, some would probably be a catastrophic failure, but hey! You never know before you try ;)! So I decided to try once again (the tenth time?) start my new project and get some extra motivation from the Get Noticed! competition.
Yes, I’m in!
BTW If you don’t know, the Get Noticed! is a competition dedicated to programmers who decided to develop some application, publish the code on github and write 2 posts on a blog (weekly, for 10 weeks).
Ladies and gentelmen – ReMaster’s details
I would like to present you my pet project’s assumptions:
The REcruitmentMASTER (shortly ReMaster) is a web application dedicated to people searching and applying for a job. The main aim is to make recruitment process easier for both sides – recruited person will feel safer knowing what to suspect and recruiting company will not lose time for people absolutely not suitable for the vacant (because these people will not try to get the job when they realize the recruitment process is above/below their capabilities, right? Right! 😉 ).
Application will enable anonymously:
- Rate recruitment process in the company
- Add questions and tasks user had to solve at the recruitment process
- Rate added entries (so if one user adds unreal information, other users can mark it as ‘a lie’)
- Search for the recruitment processes’ details in any Polish company
Admin functions:
- Moderation of all recruitment data
- Turning on/off specific company (which means, users can or cannot add info about its recruitment)
- Blocking data from some specific IP if users get ‘rude’ etc.
- … probably some more
In the second stage of development, I will add next features, like:
- Company account that enables adding some example recruitment tasks/questions, description of ideal employee and so on.
- Add companies from other countries (if I find a way to get this info – any suggestion here will be appreciated!)
BTW Polish companies list will be (weekly or monthly) retrieved from CEIDG Api.
… and the technical side
It’s funny fact but I barely had touched web development for about 13-14 last months so I’m a little bit nervous how much newbie I became. So to make things a little bit worse (ekhm, I mean challenging!), I chose technology I have never tried (thanks to that I will be able to say ‘Oh, I’m not that dumb, it’s just I’m still learning this stuff, you see?’). So here we go:
- Asp.Net Core MVC (the ‘Core’ part is new for me, not that I see asp.net for the first time in my life 😉 )
- Entity Framework Core (again ‘Core’ means ‘I have no idea what I’m doing here’)
- nLog
- Xunit (never tried, it’s gonna be fun… I hope :P)
- AutoMapper
- MSSQL Server 2014
- jQuery – just for some basic stuff
- Angular or React (in the future) – meh, I hate all these JS madness but I have to admit, JS is the future (can’t believe I told that!), so let’s wipe away the tears and give it a try. Thank God my husband is a kind of JS magician so I will have my personal portable stack-overflow siting in the same room 😉
- …and probably some more I can’t think about right now.
I aim to host the project on Linux and, as an IIS’ big fan, I feel it will be fun discovering this topic too.
App’s skeleton
I was considering merging EntityFramework project with BusinessLogic but I decided to stick to that structure. I hope I’m not gonna regret this ;).
How do I plan to use these layers?
- Tests – obvious.
- ReMaster.Web – the “real” MVC part of the solution.
- ReMaster.EntityFramework – just like a name says – EF so it’s a place for DBContext class and Migration files. Probably nothing more here.
- ReMaster.Core – I will put model classes here.
- ReMaster.BusinessLogic – the place for Services.
- ReMaster.Utilities – some ‘tools’ like interfaces and so on.
As you can see, the architecture contains of services layer and DAL so I’ll use both patterns here – services and repository.
And that’s the tricky part… I don’t know if it’s because of my age (jeez, am I that old? Are these wrinkles real?!) or if it’s all about me being ‘out of the business’ for about a year but I have to admit, service layer is not a thing I add here willingly. In fact, till now I was a huge fun of repository pattern and didn’t see any need for adding one more abstraction layer… But recently I have more time to read some blogs and I was getting stunned… All I was thinking was ‘Guys! Why do you hate repository pattern so much?! It’s so lovely!”
But as it always happens, the more I read the more I understood and I will stick to this project’s structure. And probably I will focus on the advantages of service pattern in some near future, in separate post.
And that’s it. Wish me luck to survive till the end of the competition (that will be a big success! And in fact, my main goal!) and see you in a few days!
Oh, and btw, this is ReMaster github page, in case you want to follow the code (or the white rabbit, choose wisely).