During 2018 a student CubeSat project was developed at George Washington University (GWU) for the first time. The small satellite mission implemented a software stack with the hope of creating a simple and lightweight framework for future academic CubeSats. The developed flight software consisted of a collection of fundamental services and an application layer, which was executed above the Network Layer and the Operating System. Accompanying ground station software was also developed for the mission. This paper presents the resulting software framework, its simple architecture, features, software quality attributes, and the decisions made during the design and implementation. The paper will address and compare other available open source software frameworks for CubeSat missions and will propose a general architecture for any CubeSat mission at an introductory level. This generic framework will define the minimum features and standards to obtain a flexible, portable and reusable software library. The paper will provide students without previous CubeSat experience some initial information and examples to start the development of a CubeSat flight software.