-
Notifications
You must be signed in to change notification settings - Fork 6
Milestone 1 Report
The start phase of the project was challenging since it includes creating and organizing small teams,choosing technologies, training of the team members, installation and setup processes of necessary programs. It took a considerable time to begin working on the project in terms of implementation. The overhead due to initialization process causes creating less as a last product for the customer. Profile page, desktop web design and building Android app are obvious missing points in this milestone. However, we are able to show the basic logic of the platform.
Deliverable | Status |
---|---|
Authentication with JWT | Completed |
Create user and event models and APIs | Completed |
Sign In, Sign Up Pages | Completed |
Feed page | Completed |
Event Detail & Creation Page | Completed |
User Profile Page | Not Complete |
Desktop Web Design | Not Complete |
Building Android App | Not Complete |
NodeJS Architecture Design and Setup | Completed |
Ionic Architecture Design and Setup | Completed |
Deployment | Completed |
In backend, we desire to have a concise as well as flexible architecture enabling creating models for abstraction of data and dividing the code into modules via controllers. The current architecture is, for now, sufficient for creating our event share platform, Actopus. Moreover, all the backend deliverables are successfully completed in this milestone. For the next milestones, the
Person | Coding Summary |
---|---|
Didem Öngü | - |
Kemal Tulum | - |
Oğuz Kaan Yüksel | Frontend Authentication & Data Services, Frontend-Backend integration, Frontend routing & feature modularization: Non-UI frontend base system |
İlyas Demirkıran | - |
Gökhan Tekel | - |
Özgür Akaoğlu | Event Data Model Delete Route, Authentication with JWT |
Ümit Yolcu | Event Data Model Route / Controller Creation |
Yusuf Kalaycı | User Model Signin Route / Sesion Control |
Nazmican Çalık | Backend server initial structure, initial code with User Data model and route, JWT Authentication, Database Setup, mLab and Heroku Continuous Deployment |
We have designed our application to behave as a full stack multi-platform application. Our application has 2 platforms: Mobile application and Web Application. They both share the same database on the backend side. One server for our application serves the database and necessary CRUD operations via api. We are using ionic framework for frontend and mobile application. Our backend serves the static files that ionic framework creates and also serves api endpoints under /api route. We used a nosql database (mongodb) fot the application. Also, we have created a continuous deployment using heroku services. We are planning to create CRUD operations for all data models and also create search and recommendation engines to make the platform more interactable.
Teams, Workflow and General Overview In the project we have two main teams. One for frontend and one for backend. We have two types of meetings:
- One for sprint meetings (Where all team meets)
- The other is for sub-team meetings.(i.e. frontend meeting)
Our root repository holds both backend and frontend stack together. We have one main branch for code development and production, which is master. Each task is solved/carried out under feature branches, and then they are deleted. For example: If authentication is a feature, the developer opens a new branch for the feature and works there. After completing the feature s/he opens a pull request and merges the feature to master if it is accepted.(Rebase strategy is used) We have an automated pr checker (codacy bot) for conventions and better pull requests.
User Stories and Tasks: Each task corresponds to a user story. At the sprint meetings we decide about the main tasks and user stories. After that user stories are created as issues on the github. Then assigned to backend or frontend team leaders. After that team leaders decide about the technical specific tasks and assigns them to team members. This is the main workflow that we follow.
Folder Structure and Deployment: Backend and frontend teams works under their corresponding folders, which are seperated under the repository. In the main project root. We have another package.json which is the entry point for our node environment. When there is a push to master (a successfull pull request), heroku installs the dependencies recursively in both backend and frontend folders. After getting the dependencies, it builds the frontend and starts up the backend server which serves the static frontend and api routes.
Branch Naming Convention: We use the following format for branch naming:
- [task-type]/[platform]/[name or desc of the task] for example: feature/backend/auth
- [feature|refactor|bug|test]/[backend|frontend|deployment]/[descriptive-name]
We are using several tools for different areas of our development process from communication to code quality.
- Communication: We try to use github issues as a platform to distribute the tasks. In order to make it efficient we use labels. Also, for urgent issues we use whatsapp.
-
Frontend
- Ionic: We use ionic for hybrid android and web application frontend.
-
Backend
- NodeJs: Nodejs is our server side strategy for this application. We use express framework for the backend. Express is very handy for api and basic server development.
- Mongo Db: We are using mongodb nosql database to hold our models and all kinds of data. After a discussion we decided that using a nosql database would be much better for horizontal scaling.
- Mongoose: Mongoose is the npm package that we use for database object relation model. Mongoose makes it easy for us to interact with the database collections. (Save,delete,find etc.)
- Passport Js: We use passport to handle the authentication, passport is a middleware npm package that can be used with different auth strategies (facebook, local, twitter etc), which makes the auth scalable.
- mLab: Mlab is a cloud database hosting service. We use it to speed up development and also it makes database easily maintainable.
- To be continued.