project setup with basic functionality