That are a couple of questions, let's see if I can help you.
Do we need to create the database or the backstage will create? Who creates the database tables?
Roadie has a nice intro on running Backstage on AWS Fargate. That includes the steps for provisioning an RDS database. In Backstage, each backend plugin that requires a database is itself responsible for managing the database. You provide only the global credentials and the plugins setup the databases by themself (e.g. creating tables, running migrations for new versions).
What do we do if we ant to add another column to the service catalog?
The database structure of the catalog plugin is quite flexible. If you want to add additional data to it you don't have to modify the database. The Backstage documentation provides some details on extending the data model. To display the data, you have to options: You can either create a plugin that provides new display components to display the value. Or you can change the columns of the catalog table. For that you have to modify your Backstage app a bit. I can't provide the full details as I haven't done it yet, but you can pass custom columns
into the <CatalogTable>
.
The docs says the backstage is a mono repo? does that mean do we have both the front end and back end development in single repo?
Yes, if you create you new Backstage app with npx @backstage/create-app
you get both the frontend and backend, as well as an environment for plugin development in the same folder structure. It should also be all set up the create a running container from that that runs the backend and serves the frontend.
Is there any need or requirement for Java development if we want to use backstage?
No, you don't need Java skills. Backstage is written in TypeScript and React in the frontend and TypeScript, NodeJS, and Express in the backend.